Transformations
- hypertiling.transformation.htadd(x, dx, y, dy)
Perform addition of numbers (x,dx) and (y,dy) given in double double representation.
- Parameters:
x (float): a floating point number. dx (float): overflow of x y (float): a floating point number. dy (float): overflow of y
- Returns:
r (float): x + y + (dx + dy) e (float): the overflow
- hypertiling.transformation.htcplxadd(a, da, b, db)
Perform addition of complex double double numbers
- hypertiling.transformation.htcplxdiff(a, da, b, db)
Perform subtraction of complex double double numbers
- hypertiling.transformation.htcplxdiv(a, da, b, db)
Perform division of complex double double numbers
- hypertiling.transformation.htcplxprod(a, da, b, db)
Perform multiplication of complex double double numbers
- hypertiling.transformation.htcplxprodconjb(a, da, b, db)
Perform multiplication of complex double double numbers where b is conjugated.
\[(a, da) * (b, db)^* = (r, dr)\]- Parameters:
- afloat
a floating point number.
- dafloat
overflow of a
- bfloat
a floating point number.
- dbfloat
overflow of b
- Returns:
r : float
- drfloat
the overflow
- hypertiling.transformation.htdiff(x, dx, y, dy)
Perform subtraction of numbers given in double double representation
- hypertiling.transformation.htdiv(x, dx, y, dy)
Perform division of numbers given in double double representation
- hypertiling.transformation.htprod(x, dx, y, dy)
Perform multplication of numbers given in double double representation
- hypertiling.transformation.kahan(x, y)
Transform the addition of two floating point numbers:
\[x + y = r + e\](Dekker1971) showed that this transform is exact, if abs(x) > abs(y).
- Parameters:
x (float): a floating point number. y (float): a floating point number with abs(y) < abs(x).
- Returns:
r (float): x + y e (float): the overflow
- hypertiling.transformation.moeb_origin_trafo(z0, z)
Maps all points z such that z0 -> 0, respecting the Poincare projection: (z - z0)/(1 - z0 * z)
- Parameters:
z0 (complex): the origin that we map back to. z (complex): the point that we will tr
- Returns:
ret (complex): z Möbius transformed around z0: (z - z0)/(1 - z0 * z)
- hypertiling.transformation.moeb_origin_trafo_inversedd(z0, dz0, z, dz)
Inverse Möbius transform to the origin in double double representation
- hypertiling.transformation.moeb_origin_trafodd(z0, dz0, z, dz)
Möbius transform to the origin in double double representation
- hypertiling.transformation.moeb_rotate_trafo(phi, z)
Rotates z by phi counter-clockwise about the origin.
- hypertiling.transformation.moeb_rotate_trafodd(z, dz, phi)
Rotation of a complex number
- hypertiling.transformation.mymoebint(z0, z)
Internal function for performing a full Möbius transform in double-double representation.
- hypertiling.transformation.twodiff(x, y)
branch free transformation of subtraction
- hypertiling.transformation.twoproduct(x, y)
Product of two numbers: x*y = r + e. See Ogita et al. 2005. Note that the magic numbers in this function restrict its domain to IEEE double precision numbers
- hypertiling.transformation.twosum(x, y)
branch free transformation of addition by Knuth