///|
/// `atan2(y, x)` returns the angle whose tangent is `y/x`.
///
/// # Examples
///
/// ```moonbit nocheck
/// assert_eq(atan2(1, 0), 1.5707963267948966)
/// assert_eq(atan2(1, 1), 0.7853981633974483)
/// assert_eq(atan2(0, -1), 3.141592653589793)
/// ```
///
/// # Special Cases:
///
/// 1. `atan2((anything), NaN)` is NaN;
/// 2. `atan2(NAN, (anything))` is NaN;
/// 3. `atan2(+-0, +(anything but NaN))` is +-0;
/// 4. `atan2(+-0, -(anything but NaN))` is +-pi;
/// 5. `atan2(+-(anything but 0 and NaN), 0)` is +-pi/2;
/// 6. `atan2(+-(anything but INF and NaN), +INF)` is +-0;
/// 7. `atan2(+-(anything but INF and NaN), -INF)` is +-pi;
/// 8. `atan2(+-INF,+INF)` is +-pi/4;
/// 9. `atan2(+-INF,-INF)` is +-3pi/4;
/// 10. `atan2(+-INF, (anything but,0,NaN, and INF))` is +-pi/2;
pub fn atan2(y : Double, x : Double) -> Double {
if x.is_nan() || y.is_nan() {
return @double.not_a_number
}
let tiny = 1.0e-300
let zero = 0.0
let pi_o_4 = 7.8539816339744827900E-01
let pi_o_2 = 1.5707963267948965580E+00
let pi = 3.1415926535897931160E+00
let pi_lo = 1.2246467991473531772E-16 // 0x3FE921FB, 0x54442D18
// 0x3FF921FB, 0x54442D18
// 0x400921FB, 0x54442D18
// 0x3CA1A626, 0x33145C07
let hx = __hi(x).reinterpret_as_int()
let hy = __hi(y).reinterpret_as_int()
let ix = hx & 0x7fffffff
let iy = hy & 0x7fffffff
if x == 1.0 {
return atan(y)
}
let m = ((hy >> 31) & 1) | ((hx >> 30) & 2)
if y == 0 {
match m {
0 | 1 => return y
2 => return pi + tiny
_ => return -pi - tiny // case m == 3
}
}
if x == 0 {
return if hy < 0 { -pi_o_2 - tiny } else { pi_o_2 + tiny }
}
if x.is_inf() {
if y.is_inf() {
match m {
0 => return pi_o_4 + tiny
1 => return -pi_o_4 - tiny
2 => return 3.0 * pi_o_4 + tiny
_ => return -3.0 * pi_o_4 - tiny // case m == 3
}
} else {
match m {
0 => return zero
1 => return -zero
2 => return pi + tiny
_ => return -pi - tiny // case m == 3
}
}
}
if y.is_inf() {
return if hy < 0 { -pi_o_2 - tiny } else { pi_o_2 + tiny }
}
let k = (iy - ix) >> 20
let z = if k > 60 {
pi_o_2 + 0.5 * pi_lo
} else if hx < 0 && k < -60 {
0.0
} else {
atan(fabs(y / x))
}
match m {
0 => z
1 => -z
2 => pi - (z - pi_lo)
_ => z - pi_lo - pi
}
}
///|
test "atan2" {
fn assert_atan2_ulp(input1, input2, expect) raise {
assert_ulp(expect, atan2(input1, input2), ATAN2_MAX_ULP)
}
assert_atan2_ulp(0, 0, 0)
assert_atan2_ulp(0, 1, 0)
assert_atan2_ulp(0, 2, 0)
assert_atan2_ulp(0, 3, 0)
assert_atan2_ulp(0, 5, 0)
assert_atan2_ulp(0, 6, 0)
assert_atan2_ulp(0, 7, 0)
assert_atan2_ulp(0, 13, 0)
assert_atan2_ulp(0, 14, 0)
assert_atan2_ulp(0, 15, 0)
assert_atan2_ulp(0, -1, 3.141592653589793)
assert_atan2_ulp(0, -2, 3.141592653589793)
assert_atan2_ulp(0, -8, 3.141592653589793)
assert_atan2_ulp(0, -15, 3.141592653589793)
assert_atan2_ulp(0, 0.12, 0)
assert_atan2_ulp(0, 0.23, 0)
assert_atan2_ulp(0, 0.34, 0)
assert_atan2_ulp(0, 0.78, 0)
assert_atan2_ulp(0, 0.89, 0)
assert_atan2_ulp(0, 0.9, 0)
assert_atan2_ulp(0, -0.87, 3.141592653589793)
assert_atan2_ulp(0, -0.76, 3.141592653589793)
assert_atan2_ulp(0, -0.32, 3.141592653589793)
assert_atan2_ulp(0, -0.21, 3.141592653589793)
assert_atan2_ulp(0, -0.1, 3.141592653589793)
assert_atan2_ulp(0, 0.12345, 0)
assert_atan2_ulp(0, 0.23456, 0)
assert_atan2_ulp(0, 0.34567, 0)
assert_atan2_ulp(0, 0.45678, 0)
assert_atan2_ulp(0, 0.56789, 0)
assert_atan2_ulp(0, -0.98765, 3.141592653589793)
assert_atan2_ulp(0, -0.87654, 3.141592653589793)
assert_atan2_ulp(0, -0.76543, 3.141592653589793)
assert_atan2_ulp(0, -0.10987, 3.141592653589793)
assert_atan2_ulp(0, 1.234, 0)
assert_atan2_ulp(0, 2.345, 0)
assert_atan2_ulp(0, 3.456, 0)
assert_atan2_ulp(0, 4.567, 0)
assert_atan2_ulp(0, 5.678, 0)
assert_atan2_ulp(0, 11.234, 0)
assert_atan2_ulp(0, -1.234, 3.141592653589793)
assert_atan2_ulp(0, -2.345, 3.141592653589793)
assert_atan2_ulp(0, -3.456, 3.141592653589793)
assert_atan2_ulp(0, -10.123, 3.141592653589793)
assert_atan2_ulp(0, -13.456, 3.141592653589793)
assert_atan2_ulp(0, 3.1415926, 0)
assert_atan2_ulp(0, 2.7182818, 0)
assert_atan2_ulp(0, 1.6180339, 0)
assert_atan2_ulp(0, 1.4142136, 0)
assert_atan2_ulp(0, 1.7320508, 0)
assert_atan2_ulp(0, 0.5772157, 0)
assert_atan2_ulp(0, 0.6931472, 0)
assert_atan2_ulp(0, 0.4342945, 0)
assert_atan2_ulp(0, 0.0000001, 0)
assert_atan2_ulp(0, 1000000000, 0)
assert_atan2_ulp(0, 31415926535897.125, 0)
assert_atan2_ulp(0, -27182818284590.566, 3.141592653589793)
assert_atan2_ulp(0, @double.max_value, 0)
assert_atan2_ulp(0, @double.min_value, 3.141592653589793)
assert_atan2_ulp(0, @double.infinity, 0)
assert_atan2_ulp(0, @double.neg_infinity, 3.141592653589793)
assert_atan2_ulp(0, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(1, 0, 1.5707963267948966)
assert_atan2_ulp(1, 1, 0.7853981633974483)
assert_atan2_ulp(1, 2, 0.4636476090008061)
assert_atan2_ulp(1, 3, 0.3217505543966422)
assert_atan2_ulp(1, 5, 0.19739555984988078)
assert_atan2_ulp(1, 6, 0.16514867741462683)
assert_atan2_ulp(1, 7, 0.1418970546041639)
assert_atan2_ulp(1, 13, 0.07677189126977804)
assert_atan2_ulp(1, 14, 0.07130746478529032)
assert_atan2_ulp(1, 15, 0.06656816377582381)
assert_atan2_ulp(1, -1, 2.356194490192345)
assert_atan2_ulp(1, -2, 2.677945044588987)
assert_atan2_ulp(1, -8, 3.017237659043032)
assert_atan2_ulp(1, -15, 3.0750244898139694)
assert_atan2_ulp(1, 0.12, 1.4513674007765582)
assert_atan2_ulp(1, 0.23, 1.3447279388010127)
assert_atan2_ulp(1, 0.34, 1.2430578200143412)
assert_atan2_ulp(1, 0.78, 0.9083700329617455)
assert_atan2_ulp(1, 0.89, 0.8435336387982063)
assert_atan2_ulp(1, 0.9, 0.83798122500839)
assert_atan2_ulp(1, -0.87, 2.286787441211197)
assert_atan2_ulp(1, -0.76, 2.220666776206844)
assert_atan2_ulp(1, -0.32, 1.880499271337353)
assert_atan2_ulp(1, -0.21, 1.7777885210147177)
assert_atan2_ulp(1, -0.1, 1.6704649792860586)
assert_atan2_ulp(1, 0.12345, 1.4479677761074812)
assert_atan2_ulp(1, 0.23456, 1.3404013799141725)
assert_atan2_ulp(1, 0.34567, 1.2379841642649547)
assert_atan2_ulp(1, 0.45678, 1.1423184755693105)
assert_atan2_ulp(1, 0.56789, 1.0543218170106494)
assert_atan2_ulp(1, -0.98765, 2.3499812026035287)
assert_atan2_ulp(1, -0.87654, 2.290497873432717)
assert_atan2_ulp(1, -0.76543, 2.224099719663926)
assert_atan2_ulp(1, -0.10987, 1.6802274059489557)
assert_atan2_ulp(1, 1.234, 0.6810338778357072)
assert_atan2_ulp(1, 2.345, 0.40308905838988207)
assert_atan2_ulp(1, 3.456, 0.281659450883516)
assert_atan2_ulp(1, 4.567, 0.21556012355748172)
assert_atan2_ulp(1, 5.678, 0.17433057974616387)
assert_atan2_ulp(1, 11.234, 0.08878148781735883)
assert_atan2_ulp(1, -1.234, 2.460558775754086)
assert_atan2_ulp(1, -2.345, 2.7385035951999113)
assert_atan2_ulp(1, -3.456, 2.8599332027062774)
assert_atan2_ulp(1, -10.123, 3.043127169842129)
assert_atan2_ulp(1, -13.456, 3.0674127259575354)
assert_atan2_ulp(1, 3.1415926, 0.30816907604622823)
assert_atan2_ulp(1, 2.7182818, 0.3525134251700204)
assert_atan2_ulp(1, 1.6180339, 0.5535743834269139)
assert_atan2_ulp(1, 1.4142136, 0.615479696128086)
assert_atan2_ulp(1, 1.7320508, 0.5235987774905182)
assert_atan2_ulp(1, 0.5772157, 1.047298483969844)
assert_atan2_ulp(1, 0.6931472, 0.964684378930889)
assert_atan2_ulp(1, 0.4342945, 1.1610795674607026)
assert_atan2_ulp(1, 0.0000001, 1.5707962267948967)
assert_atan2_ulp(1, 1000000000, 0.000000001)
assert_atan2_ulp(1, 31415926535897.125, 0.000000000000031830988618379885)
assert_atan2_ulp(1, -27182818284590.566, 3.1415926535897563)
assert_atan2_ulp(1, @double.min_value, 3.141592653589793)
assert_atan2_ulp(1, @double.infinity, 0)
assert_atan2_ulp(1, @double.neg_infinity, 3.141592653589793)
assert_atan2_ulp(1, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(2, 0, 1.5707963267948966)
assert_atan2_ulp(2, 1, 1.1071487177940904)
assert_atan2_ulp(2, 2, 0.7853981633974483)
assert_atan2_ulp(2, 3, 0.5880026035475675)
assert_atan2_ulp(2, 5, 0.3805063771123649)
assert_atan2_ulp(2, 6, 0.3217505543966422)
assert_atan2_ulp(2, 7, 0.27829965900511133)
assert_atan2_ulp(2, 13, 0.15264932839526518)
assert_atan2_ulp(2, 14, 0.1418970546041639)
assert_atan2_ulp(2, 15, 0.13255153229667402)
assert_atan2_ulp(2, -1, 2.0344439357957027)
assert_atan2_ulp(2, -2, 2.356194490192345)
assert_atan2_ulp(2, -8, 2.896613990462929)
assert_atan2_ulp(2, -15, 3.0090411212931194)
assert_atan2_ulp(2, 0.12, 1.5108681716736887)
assert_atan2_ulp(2, 0.23, 1.4562993000274465)
assert_atan2_ulp(2, 0.34, 1.4024061696473666)
assert_atan2_ulp(2, 0.78, 1.1989402529463153)
assert_atan2_ulp(2, 0.89, 1.152108175356535)
assert_atan2_ulp(2, 0.9, 1.1479424006619559)
assert_atan2_ulp(2, -0.87, 1.9811064826908409)
assert_atan2_ulp(2, -0.76, 1.933943336741073)
assert_atan2_ulp(2, -0.32, 1.729451588981298)
assert_atan2_ulp(2, -0.21, 1.6754129844274164)
assert_atan2_ulp(2, -0.1, 1.6207547225168393)
assert_atan2_ulp(2, 0.12345, 1.5091495383306528)
assert_atan2_ulp(2, 0.23456, 1.4540496454154495)
assert_atan2_ulp(2, 0.34567, 1.399652096844507)
assert_atan2_ulp(2, 0.45678, 1.3462575856549652)
assert_atan2_ulp(2, 0.56789, 1.2941331858871057)
assert_atan2_ulp(2, -0.98765, 2.0294917442658744)
assert_atan2_ulp(2, -0.87654, 1.9838528806934157)
assert_atan2_ulp(2, -0.76543, 1.9363136176713969)
assert_atan2_ulp(2, -0.10987, 1.6256761647025755)
assert_atan2_ulp(2, 1.234, 1.0179705151849427)
assert_atan2_ulp(2, 2.345, 0.7061627895165192)
assert_atan2_ulp(2, 3.456, 0.5246132565946418)
assert_atan2_ulp(2, 4.567, 0.41276646877822837)
assert_atan2_ulp(2, 5.678, 0.33866603657315836)
assert_atan2_ulp(2, 11.234, 0.1761850571581438)
assert_atan2_ulp(2, -1.234, 2.1236221384048504)
assert_atan2_ulp(2, -2.345, 2.435429864073274)
assert_atan2_ulp(2, -3.456, 2.6169793969951516)
assert_atan2_ulp(2, -10.123, 2.946534825868303)
assert_atan2_ulp(2, -13.456, 2.9940403033215612)
assert_atan2_ulp(2, 3.1415926, 0.5669115126686695)
assert_atan2_ulp(2, 2.7182818, 0.6343243242259863)
assert_atan2_ulp(2, 1.6180339, 0.8905813767345983)
assert_atan2_ulp(2, 1.4142136, 0.9553166055822078)
assert_atan2_ulp(2, 1.7320508, 0.8570719500126673)
assert_atan2_ulp(2, 0.5772157, 1.2898235352623406)
assert_atan2_ulp(2, 0.6931472, 1.237177234700603)
assert_atan2_ulp(2, 0.4342945, 1.3569686960985528)
assert_atan2_ulp(2, 0.0000001, 1.5707962767948966)
assert_atan2_ulp(2, 1000000000, 0.000000002)
assert_atan2_ulp(2, 31415926535897.125, 0.00000000000006366197723675977)
assert_atan2_ulp(2, -27182818284590.566, 3.14159265358972)
assert_atan2_ulp(2, @double.min_value, 3.141592653589793)
assert_atan2_ulp(2, @double.infinity, 0)
assert_atan2_ulp(2, @double.neg_infinity, 3.141592653589793)
assert_atan2_ulp(2, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(3, 0, 1.5707963267948966)
assert_atan2_ulp(3, 1, 1.2490457723982544)
assert_atan2_ulp(3, 2, 0.982793723247329)
assert_atan2_ulp(3, 3, 0.7853981633974483)
assert_atan2_ulp(3, 5, 0.5404195002705842)
assert_atan2_ulp(3, 6, 0.4636476090008061)
assert_atan2_ulp(3, 7, 0.40489178628508343)
assert_atan2_ulp(3, 13, 0.22679884805388587)
assert_atan2_ulp(3, 14, 0.21109333322274654)
assert_atan2_ulp(3, 15, 0.19739555984988075)
assert_atan2_ulp(3, -1, 1.892546881191539)
assert_atan2_ulp(3, -2, 2.158798930342464)
assert_atan2_ulp(3, -8, 2.782821983319221)
assert_atan2_ulp(3, -15, 2.9441970937399127)
assert_atan2_ulp(3, 0.12, 1.5308176396716067)
assert_atan2_ulp(3, 0.23, 1.4942793424785574)
assert_atan2_ulp(3, 0.34, 1.457944522458014)
assert_atan2_ulp(3, 0.78, 1.3164282682416306)
assert_atan2_ulp(3, 0.89, 1.2824004349094889)
assert_atan2_ulp(3, 0.9, 1.2793395323170296)
assert_atan2_ulp(3, -0.87, 1.8530537487763878)
assert_atan2_ulp(3, -0.76, 1.818909775891573)
assert_atan2_ulp(3, -0.32, 1.6770611896859755)
assert_atan2_ulp(3, -0.21, 1.640682328429539)
assert_atan2_ulp(3, -0.1, 1.6041173226731438)
assert_atan2_ulp(3, 0.12345, 1.5296695299654761)
assert_atan2_ulp(3, 0.23456, 1.4927684006903987)
assert_atan2_ulp(3, 0.34567, 1.4560788873167616)
assert_atan2_ulp(3, 0.45678, 1.4196968463828772)
assert_atan2_ulp(3, 0.56789, 1.3837132953966027)
assert_atan2_ulp(3, -0.98765, 1.8888373168742938)
assert_atan2_ulp(3, -0.87654, 1.8550634586983763)
assert_atan2_ulp(3, -0.76543, 1.8206098853442114)
assert_atan2_ulp(3, -0.10987, 1.6074032993843728)
assert_atan2_ulp(3, 1.234, 1.1805581753974559)
assert_atan2_ulp(3, 2.345, 0.9073346437146225)
assert_atan2_ulp(3, 3.456, 0.7148833008239893)
assert_atan2_ulp(3, 4.567, 0.5812010232396205)
assert_atan2_ulp(3, 5.678, 0.4860734949071566)
assert_atan2_ulp(3, 11.234, 0.2609569427268893)
assert_atan2_ulp(3, -1.234, 1.9610344781923374)
assert_atan2_ulp(3, -2.345, 2.234258009875171)
assert_atan2_ulp(3, -3.456, 2.426709352765804)
assert_atan2_ulp(3, -10.123, 2.853483392647836)
assert_atan2_ulp(3, -13.456, 2.9222313614015003)
assert_atan2_ulp(3, 3.1415926, 0.7623475426848932)
assert_atan2_ulp(3, 2.7182818, 0.8346245946916148)
assert_atan2_ulp(3, 1.6180339, 1.0761706091842316)
assert_atan2_ulp(3, 1.4142136, 1.130285653528315)
assert_atan2_ulp(3, 1.7320508, 1.0471975530888171)
assert_atan2_ulp(3, 0.5772157, 1.3807139781908484)
assert_atan2_ulp(3, 0.6931472, 1.343731808144767)
assert_atan2_ulp(3, 0.4342945, 1.4270302368767345)
assert_atan2_ulp(3, 0.0000001, 1.5707962934615634)
assert_atan2_ulp(3, 1000000000, 0.000000003)
assert_atan2_ulp(3, 31415926535897.125, 0.00000000000009549296585513966)
assert_atan2_ulp(3, -27182818284590.566, 3.141592653589683)
assert_atan2_ulp(3, @double.min_value, 3.141592653589793)
assert_atan2_ulp(3, @double.infinity, 0)
assert_atan2_ulp(3, @double.neg_infinity, 3.141592653589793)
assert_atan2_ulp(3, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(5, 0, 1.5707963267948966)
assert_atan2_ulp(5, 1, 1.373400766945016)
assert_atan2_ulp(5, 2, 1.1902899496825317)
assert_atan2_ulp(5, 3, 1.0303768265243125)
assert_atan2_ulp(5, 5, 0.7853981633974483)
assert_atan2_ulp(5, 6, 0.6947382761967031)
assert_atan2_ulp(5, 7, 0.6202494859828215)
assert_atan2_ulp(5, 13, 0.3671738338182192)
assert_atan2_ulp(5, 14, 0.3430239404207034)
assert_atan2_ulp(5, 15, 0.3217505543966422)
assert_atan2_ulp(5, -1, 1.7681918866447774)
assert_atan2_ulp(5, -2, 1.9513027039072615)
assert_atan2_ulp(5, -8, 2.5829933382462307)
assert_atan2_ulp(5, -15, 2.819842099193151)
assert_atan2_ulp(5, 0.12, 1.5468009332030268)
assert_atan2_ulp(5, 0.23, 1.5248287309977921)
assert_atan2_ulp(5, 0.34, 1.5029008476318355)
assert_atan2_ulp(5, 0.78, 1.416043636116873)
assert_atan2_ulp(5, 0.89, 1.394641295521127)
assert_atan2_ulp(5, 0.9, 1.392703388563699)
assert_atan2_ulp(5, -0.87, 1.7430715437484252)
assert_atan2_ulp(5, -0.76, 1.7216416884158363)
assert_atan2_ulp(5, -0.32, 1.6347091595836307)
assert_atan2_ulp(5, -0.21, 1.612771656900254)
assert_atan2_ulp(5, -0.1, 1.590793660768047)
assert_atan2_ulp(5, 0.12345, 1.5461113419366008)
assert_atan2_ulp(5, 0.23456, 1.5239186950634191)
assert_atan2_ulp(5, 0.34567, 1.5017721542274958)
assert_atan2_ulp(5, 0.45678, 1.4796932115814467)
assert_atan2_ulp(5, 0.56789, 1.4577029651634714)
assert_atan2_ulp(5, -0.98765, 1.7658157624555124)
assert_atan2_ulp(5, -0.87654, 1.744340825396471)
assert_atan2_ulp(5, -0.76543, 1.72270299244815)
assert_atan2_ulp(5, -0.10987, 1.592766791054994)
assert_atan2_ulp(5, 1.234, 1.3288316886374443)
assert_atan2_ulp(5, 2.345, 1.1322548226590345)
assert_atan2_ulp(5, 3.456, 0.9660008514290135)
assert_atan2_ulp(5, 4.567, 0.8306270443425237)
assert_atan2_ulp(5, 5.678, 0.7219882503364328)
assert_atan2_ulp(5, 11.234, 0.4187527921991008)
assert_atan2_ulp(5, -1.234, 1.812760964952349)
assert_atan2_ulp(5, -2.345, 2.009337830930759)
assert_atan2_ulp(5, -3.456, 2.17559180216078)
assert_atan2_ulp(5, -10.123, 2.6828170649802794)
assert_atan2_ulp(5, -13.456, 2.78582243090638)
assert_atan2_ulp(5, 3.1415926, 1.0098142183705863)
assert_atan2_ulp(5, 2.7182818, 1.0728365153015629)
assert_atan2_ulp(5, 1.6180339, 1.2578250631640666)
assert_atan2_ulp(5, 1.4142136, 1.295153520610686)
assert_atan2_ulp(5, 1.7320508, 1.2373231558946498)
assert_atan2_ulp(5, 0.5772157, 1.4558619660841177)
assert_atan2_ulp(5, 0.6931472, 1.4330448509347455)
assert_atan2_ulp(5, 0.4342945, 1.4841548780531184)
assert_atan2_ulp(5, 0.0000001, 1.5707963067948967)
assert_atan2_ulp(5, 1000000000, 0.000000005)
assert_atan2_ulp(5, 31415926535897.125, 0.00000000000015915494309189943)
assert_atan2_ulp(5, -27182818284590.566, 3.1415926535896093)
assert_atan2_ulp(5, @double.min_value, 3.141592653589793)
assert_atan2_ulp(5, @double.infinity, 0)
assert_atan2_ulp(5, @double.neg_infinity, 3.141592653589793)
assert_atan2_ulp(5, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(6, 0, 1.5707963267948966)
assert_atan2_ulp(6, 1, 1.4056476493802699)
assert_atan2_ulp(6, 2, 1.2490457723982544)
assert_atan2_ulp(6, 3, 1.1071487177940904)
assert_atan2_ulp(6, 5, 0.8760580505981934)
assert_atan2_ulp(6, 6, 0.7853981633974483)
assert_atan2_ulp(6, 7, 0.7086262721276703)
assert_atan2_ulp(6, 13, 0.43240777557053783)
assert_atan2_ulp(6, 14, 0.40489178628508343)
assert_atan2_ulp(6, 15, 0.3805063771123649)
assert_atan2_ulp(6, -1, 1.7359450042095235)
assert_atan2_ulp(6, -2, 1.892546881191539)
assert_atan2_ulp(6, -8, 2.498091544796509)
assert_atan2_ulp(6, -15, 2.761086276477428)
assert_atan2_ulp(6, 0.12, 1.550798992821746)
assert_atan2_ulp(6, 0.23, 1.5324817531591068)
assert_atan2_ulp(6, 0.34, 1.5141901978559291)
assert_atan2_ulp(6, 0.78, 1.4415213227467536)
assert_atan2_ulp(6, 0.89, 1.4235367682193012)
assert_atan2_ulp(6, 0.9, 1.4219063791853994)
assert_atan2_ulp(6, -0.87, 1.7147927485037886)
assert_atan2_ulp(6, -0.76, 1.6967920089589092)
assert_atan2_ulp(6, -0.32, 1.624079178354589)
assert_atan2_ulp(6, -0.21, 1.6057820456234224)
assert_atan2_ulp(6, -0.1, 1.5874614505088374)
assert_atan2_ulp(6, 0.12345, 1.5502242294002118)
assert_atan2_ulp(6, 0.23456, 1.5317228905196822)
assert_atan2_ulp(6, 0.34567, 1.513248273200197)
assert_atan2_ulp(6, 0.45678, 1.4948128949441923)
assert_atan2_ulp(6, 0.56789, 1.4764291135943366)
assert_atan2_ulp(6, -0.98765, 1.7339416354941046)
assert_atan2_ulp(6, -0.87654, 1.7158601375346263)
assert_atan2_ulp(6, -0.76543, 1.6976826173100172)
assert_atan2_ulp(6, -0.10987, 1.5891059471347073)
assert_atan2_ulp(6, 1.234, 1.367958033982839)
assert_atan2_ulp(6, 2.345, 1.1982171402161286)
assert_atan2_ulp(6, 3.456, 1.0482108451987113)
assert_atan2_ulp(6, 4.567, 0.9201867729743638)
assert_atan2_ulp(6, 5.678, 0.8129643933671385)
assert_atan2_ulp(6, 11.234, 0.4905485228963195)
assert_atan2_ulp(6, -1.234, 1.7736346196069543)
assert_atan2_ulp(6, -2.345, 1.9433755133736648)
assert_atan2_ulp(6, -3.456, 2.093381808391082)
assert_atan2_ulp(6, -10.123, 2.6065509343112394)
assert_atan2_ulp(6, -13.456, 2.7221554014605953)
assert_atan2_ulp(6, 3.1415926, 1.0884484267037153)
assert_atan2_ulp(6, 2.7182818, 1.1454114319627395)
assert_atan2_ulp(6, 1.6180339, 1.3073899358475016)
assert_atan2_ulp(6, 1.4142136, 1.339318956883628)
assert_atan2_ulp(6, 1.7320508, 1.2897614264565258)
assert_atan2_ulp(6, 0.5772157, 1.4748888561767097)
assert_atan2_ulp(6, 0.6931472, 1.455781643968055)
assert_atan2_ulp(6, 0.4342945, 1.498539923235088)
assert_atan2_ulp(6, 0.0000001, 1.5707963101282298)
assert_atan2_ulp(6, 1000000000, 0.000000006)
assert_atan2_ulp(6, 31415926535897.125, 0.0000000000001909859317102793)
assert_atan2_ulp(6, -27182818284590.566, 3.1415926535895724)
assert_atan2_ulp(6, @double.min_value, 3.141592653589793)
assert_atan2_ulp(6, @double.infinity, 0)
assert_atan2_ulp(6, @double.neg_infinity, 3.141592653589793)
assert_atan2_ulp(6, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(7, 0, 1.5707963267948966)
assert_atan2_ulp(7, 1, 1.4288992721907328)
assert_atan2_ulp(7, 2, 1.2924966677897853)
assert_atan2_ulp(7, 3, 1.1659045405098132)
assert_atan2_ulp(7, 5, 0.9505468408120752)
assert_atan2_ulp(7, 6, 0.8621700546672264)
assert_atan2_ulp(7, 7, 0.7853981633974483)
assert_atan2_ulp(7, 13, 0.49394136891958124)
assert_atan2_ulp(7, 14, 0.4636476090008061)
assert_atan2_ulp(7, 15, 0.43662715981354133)
assert_atan2_ulp(7, -1, 1.7126933813990606)
assert_atan2_ulp(7, -2, 1.849095985800008)
assert_atan2_ulp(7, -8, 2.4227626539681686)
assert_atan2_ulp(7, -15, 2.704965493776252)
assert_atan2_ulp(7, 0.12, 1.553655148656288)
assert_atan2_ulp(7, 0.23, 1.5379510003856023)
assert_atan2_ulp(7, 0.34, 1.5222630405542434)
assert_atan2_ulp(7, 0.78, 1.459825527707165)
assert_atan2_ulp(7, 0.89, 1.444332001574398)
assert_atan2_ulp(7, 0.9, 1.4429264082348967)
assert_atan2_ulp(7, -0.87, 1.6944479629206306)
assert_atan2_ulp(7, -0.76, 1.6789441429475596)
assert_atan2_ulp(7, -0.32, 1.6164788078695593)
assert_atan2_ulp(7, -0.21, 1.6007873316517744)
assert_atan2_ulp(7, -0.1, 1.5850810693822932)
assert_atan2_ulp(7, 0.12345, 1.553162440512057)
assert_atan2_ulp(7, 0.23456, 1.5373002883374267)
assert_atan2_ulp(7, 0.34567, 1.5214549788878888)
assert_atan2_ulp(7, 0.45678, 1.50563442539729)
assert_atan2_ulp(7, 0.56789, 1.4898464668723101)
assert_atan2_ulp(7, -0.98765, 1.7109639559547387)
assert_atan2_ulp(7, -0.87654, 1.6953679308577665)
assert_atan2_ulp(7, -0.76543, 1.6797107558714544)
assert_atan2_ulp(7, -0.10987, 1.586490752362859)
assert_atan2_ulp(7, 1.234, 1.396303423965727)
assert_atan2_ulp(7, 2.345, 1.2475465231467544)
assert_atan2_ulp(7, 3.456, 1.1121899216511677)
assert_atan2_ulp(7, 4.567, 0.9927157444891341)
assert_atan2_ulp(7, 5.678, 0.8892977940610846)
assert_atan2_ulp(7, 11.234, 0.5572379221171028)
assert_atan2_ulp(7, -1.234, 1.7452892296240663)
assert_atan2_ulp(7, -2.345, 1.8940461304430387)
assert_atan2_ulp(7, -3.456, 2.0294027319386254)
assert_atan2_ulp(7, -10.123, 2.536597838592559)
assert_atan2_ulp(7, -13.456, 2.6619049011402036)
assert_atan2_ulp(7, 3.1415926, 1.1489416495707905)
assert_atan2_ulp(7, 2.7182818, 1.2003940994582625)
assert_atan2_ulp(7, 1.6180339, 1.3436381754049291)
assert_atan2_ulp(7, 1.4142136, 1.371449113929818)
assert_atan2_ulp(7, 1.7320508, 1.3282324537182988)
assert_atan2_ulp(7, 0.5772157, 1.4885230778609242)
assert_atan2_ulp(7, 0.6931472, 1.4720970466014662)
assert_atan2_ulp(7, 0.4342945, 1.50883367652023)
assert_atan2_ulp(7, 0.0000001, 1.5707963125091824)
assert_atan2_ulp(7, 1000000000, 0.000000007)
assert_atan2_ulp(7, 31415926535897.125, 0.0000000000002228169203286592)
assert_atan2_ulp(7, -27182818284590.566, 3.1415926535895355)
assert_atan2_ulp(7, @double.min_value, 3.141592653589793)
assert_atan2_ulp(7, @double.infinity, 0)
assert_atan2_ulp(7, @double.neg_infinity, 3.141592653589793)
assert_atan2_ulp(7, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(13, 0, 1.5707963267948966)
assert_atan2_ulp(13, 1, 1.4940244355251187)
assert_atan2_ulp(13, 2, 1.4181469983996315)
assert_atan2_ulp(13, 3, 1.3439974787410107)
assert_atan2_ulp(13, 5, 1.2036224929766774)
assert_atan2_ulp(13, 6, 1.1383885512243588)
assert_atan2_ulp(13, 7, 1.0768549578753155)
assert_atan2_ulp(13, 13, 0.7853981633974483)
assert_atan2_ulp(13, 14, 0.7483780475235183)
assert_atan2_ulp(13, 15, 0.714090698612158)
assert_atan2_ulp(13, -1, 1.6475682180646747)
assert_atan2_ulp(13, -2, 1.7234456551901618)
assert_atan2_ulp(13, -8, 2.1224513093234436)
assert_atan2_ulp(13, -15, 2.427501954977635)
assert_atan2_ulp(13, 0.12, 1.5615658197264188)
assert_atan2_ulp(13, 0.23, 1.5531058647580918)
assert_atan2_ulp(13, 0.34, 1.5446484414780945)
assert_atan2_ulp(13, 0.78, 1.5108681716736887)
assert_atan2_ulp(13, 0.89, 1.5024414478852786)
assert_atan2_ulp(13, 0.9, 1.5016758459477144)
assert_atan2_ulp(13, -0.87, 1.6376197619186244)
assert_atan2_ulp(13, -0.76, 1.6291913991655185)
assert_atan2_ulp(13, -0.32, 1.5954067415889586)
assert_atan2_ulp(13, -0.21, 1.5869487680708345)
assert_atan2_ulp(13, -0.1, 1.5784884827705454)
assert_atan2_ulp(13, 0.12345, 1.5613004583779913)
assert_atan2_ulp(13, 0.23456, 1.5527552074798021)
assert_atan2_ulp(13, 0.34567, 1.5442125907635564)
assert_atan2_ulp(13, 0.45678, 1.5356738530704204)
assert_atan2_ulp(13, 0.56789, 1.5271402358494055)
assert_atan2_ulp(13, -0.98765, 1.646623737967086)
assert_atan2_ulp(13, -0.87654, 1.638120578930146)
assert_atan2_ulp(13, -0.76543, 1.6296076586131307)
assert_atan2_ulp(13, -0.10987, 1.579247664038147)
assert_atan2_ulp(13, 1.234, 1.4761568164139434)
assert_atan2_ulp(13, 2.345, 1.3923308686324876)
assert_atan2_ulp(13, 3.456, 1.3109601303540837)
assert_atan2_ulp(13, 4.567, 1.2329570007437243)
assert_atan2_ulp(13, 5.678, 1.158999416721441)
assert_atan2_ulp(13, 11.234, 0.8581424003774496)
assert_atan2_ulp(13, -1.234, 1.66543583717585)
assert_atan2_ulp(13, -2.345, 1.7492617849573058)
assert_atan2_ulp(13, -3.456, 1.8306325232357097)
assert_atan2_ulp(13, -10.123, 2.232409065638447)
assert_atan2_ulp(13, -13.456, 2.373428949334525)
assert_atan2_ulp(13, 3.1415926, 1.3336814311280156)
assert_atan2_ulp(13, 2.7182818, 1.364667616176489)
assert_atan2_ulp(13, 1.6180339, 1.4469689769388228)
assert_atan2_ulp(13, 1.4142136, 1.4624367784504282)
assert_atan2_ulp(13, 1.7320508, 1.438341728904922)
assert_atan2_ulp(13, 0.5772157, 1.5264242631452942)
assert_atan2_ulp(13, 0.6931472, 1.5175277525836992)
assert_atan2_ulp(13, 0.4342945, 1.5374014772609799)
assert_atan2_ulp(13, 0.0000001, 1.5707963191025889)
assert_atan2_ulp(13, 1000000000, 0.000000012999999999999999)
assert_atan2_ulp(13, 31415926535897.125, 0.0000000000004138028520389385)
assert_atan2_ulp(13, -27182818284590.566, 3.141592653589315)
assert_atan2_ulp(13, @double.min_value, 3.141592653589793)
assert_atan2_ulp(13, @double.infinity, 0)
assert_atan2_ulp(13, @double.neg_infinity, 3.141592653589793)
assert_atan2_ulp(13, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(14, 0, 1.5707963267948966)
assert_atan2_ulp(14, 1, 1.4994888620096063)
assert_atan2_ulp(14, 2, 1.4288992721907328)
assert_atan2_ulp(14, 3, 1.35970299357215)
assert_atan2_ulp(14, 5, 1.2277723863741932)
assert_atan2_ulp(14, 6, 1.1659045405098132)
assert_atan2_ulp(14, 7, 1.1071487177940904)
assert_atan2_ulp(14, 13, 0.8224182792713783)
assert_atan2_ulp(14, 14, 0.7853981633974483)
assert_atan2_ulp(14, 15, 0.7509290623979403)
assert_atan2_ulp(14, -1, 1.642103791580187)
assert_atan2_ulp(14, -2, 1.7126933813990606)
assert_atan2_ulp(14, -8, 2.0899424410414196)
assert_atan2_ulp(14, -15, 2.390663591191853)
assert_atan2_ulp(14, 0.12, 1.5622251081267517)
assert_atan2_ulp(14, 0.23, 1.5543692331396575)
assert_atan2_ulp(14, 0.34, 1.5465153853586786)
assert_atan2_ulp(14, 0.78, 1.515139581183383)
assert_atan2_ulp(14, 0.89, 1.5073103288008567)
assert_atan2_ulp(14, 0.9, 1.5065989504217636)
assert_atan2_ulp(14, -0.87, 1.632859375699446)
assert_atan2_ulp(14, -0.76, 1.6250288096120913)
assert_atan2_ulp(14, -0.32, 1.5936494903357048)
assert_atan2_ulp(14, -0.21, 1.5857952019467472)
assert_atan2_ulp(14, -0.1, 1.57793906246431)
assert_atan2_ulp(14, 0.12345, 1.5619786981843764)
assert_atan2_ulp(14, 0.23456, 1.5540436084933067)
assert_atan2_ulp(14, 0.34567, 1.5461106280860597)
assert_atan2_ulp(14, 0.45678, 1.5381807540776264)
assert_atan2_ulp(14, 0.56789, 1.530254981239927)
assert_atan2_ulp(14, -0.98765, 1.6412260718063851)
assert_atan2_ulp(14, -0.87654, 1.6333247080244802)
assert_atan2_ulp(14, -0.76543, 1.6254155189845645)
assert_atan2_ulp(14, -0.10987, 1.5786440228301777)
assert_atan2_ulp(14, 1.234, 1.482880676878641)
assert_atan2_ulp(14, 2.345, 1.4048369483012901)
assert_atan2_ulp(14, 3.456, 1.3287778272499926)
assert_atan2_ulp(14, 4.567, 1.255466540133023)
assert_atan2_ulp(14, 5.678, 1.1854962403969094)
assert_atan2_ulp(14, 11.234, 0.8945763016379629)
assert_atan2_ulp(14, -1.234, 1.6587119767111522)
assert_atan2_ulp(14, -2.345, 1.736755705288503)
assert_atan2_ulp(14, -3.456, 1.8128148263398007)
assert_atan2_ulp(14, -10.123, 2.1968392412147137)
assert_atan2_ulp(14, -13.456, 2.3363835625362097)
assert_atan2_ulp(14, 3.1415926, 1.350053549645249)
assert_atan2_ulp(14, 2.7182818, 1.3790195286933964)
assert_atan2_ulp(14, 1.6180339, 1.4557329770829448)
assert_atan2_ulp(14, 1.4142136, 1.470122570583832)
assert_atan2_ulp(14, 1.7320508, 1.447703892121901)
assert_atan2_ulp(14, 0.5772157, 1.5295899720865467)
assert_atan2_ulp(14, 0.6931472, 1.5213262080062353)
assert_atan2_ulp(14, 0.4342945, 1.5397852359016488)
assert_atan2_ulp(14, 0.0000001, 1.5707963196520396)
assert_atan2_ulp(14, 1000000000, 0.000000014)
assert_atan2_ulp(14, 31415926535897.125, 0.0000000000004456338406573184)
assert_atan2_ulp(14, -27182818284590.566, 3.1415926535892784)
assert_atan2_ulp(14, @double.min_value, 3.141592653589793)
assert_atan2_ulp(14, @double.infinity, 0)
assert_atan2_ulp(14, @double.neg_infinity, 3.141592653589793)
assert_atan2_ulp(14, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(15, 0, 1.5707963267948966)
assert_atan2_ulp(15, 1, 1.5042281630190728)
assert_atan2_ulp(15, 2, 1.4382447944982226)
assert_atan2_ulp(15, 3, 1.373400766945016)
assert_atan2_ulp(15, 5, 1.2490457723982544)
assert_atan2_ulp(15, 6, 1.1902899496825317)
assert_atan2_ulp(15, 7, 1.1341691669813554)
assert_atan2_ulp(15, 13, 0.8567056281827387)
assert_atan2_ulp(15, 14, 0.8198672643969563)
assert_atan2_ulp(15, 15, 0.7853981633974483)
assert_atan2_ulp(15, -1, 1.6373644905707205)
assert_atan2_ulp(15, -2, 1.7033478590915707)
assert_atan2_ulp(15, -8, 2.060753653048625)
assert_atan2_ulp(15, -15, 2.356194490192345)
assert_atan2_ulp(15, 0.12, 1.56279649745501)
assert_atan2_ulp(15, 0.23, 1.5554641949710872)
assert_atan2_ulp(15, 0.34, 1.548133540808559)
assert_atan2_ulp(15, 0.78, 1.5188431202339827)
assert_atan2_ulp(15, 0.89, 1.5115324733283988)
assert_atan2_ulp(15, 0.9, 1.5108681716736887)
assert_atan2_ulp(15, -0.87, 1.6287314204183136)
assert_atan2_ulp(15, -0.76, 1.6214197044643055)
assert_atan2_ulp(15, -0.32, 1.5921264246660018)
assert_atan2_ulp(15, -0.21, 1.5847954122357797)
assert_atan2_ulp(15, -0.1, 1.5774628946987648)
assert_atan2_ulp(15, 0.12345, 1.562566512601268)
assert_atan2_ulp(15, 0.23456, 1.5551602678537955)
assert_atan2_ulp(15, 0.34567, 1.5477557381701565)
assert_atan2_ulp(15, 0.45678, 1.540353734520945)
assert_atan2_ulp(15, 0.56789, 1.5329550662165663)
assert_atan2_ulp(15, -0.98765, 1.6365447556935881)
assert_atan2_ulp(15, -0.87654, 1.6291659476529308)
assert_atan2_ulp(15, -0.76543, 1.6217807709284022)
assert_atan2_ulp(15, -0.10987, 1.578120862474513)
assert_atan2_ulp(15, 1.234, 1.4887144983747367)
assert_atan2_ulp(15, 2.345, 1.4157182385901854)
assert_atan2_ulp(15, 3.456, 1.3443480688867495)
assert_atan2_ulp(15, 4.567, 1.2752467273926398)
assert_atan2_ulp(15, 5.678, 1.208931543771725)
assert_atan2_ulp(15, 11.234, 0.9279782342664493)
assert_atan2_ulp(15, -1.234, 1.6528781552150564)
assert_atan2_ulp(15, -2.345, 1.725874414999608)
assert_atan2_ulp(15, -3.456, 1.7972445847030438)
assert_atan2_ulp(15, -10.123, 2.1644543891588395)
assert_atan2_ulp(15, -13.456, 2.301988436616457)
assert_atan2_ulp(15, 3.1415926, 1.3643410126365612)
assert_atan2_ulp(15, 2.7182818, 1.391523102659299)
assert_atan2_ulp(15, 1.6180339, 1.4633428803349164)
assert_atan2_ulp(15, 1.4142136, 1.4767932905009602)
assert_atan2_ulp(15, 1.7320508, 1.4558354067921426)
assert_atan2_ulp(15, 0.5772157, 1.5323342573988419)
assert_atan2_ulp(15, 0.6931472, 1.524619362711518)
assert_atan2_ulp(15, 0.4342945, 1.5418514462373436)
assert_atan2_ulp(15, 0.0000001, 1.57079632012823)
assert_atan2_ulp(15, 1000000000, 0.000000015)
assert_atan2_ulp(15, 31415926535897.125, 0.0000000000004774648292756982)
assert_atan2_ulp(15, -27182818284590.566, 3.1415926535892416)
assert_atan2_ulp(15, @double.min_value, 3.141592653589793)
assert_atan2_ulp(15, @double.infinity, 0)
assert_atan2_ulp(15, @double.neg_infinity, 3.141592653589793)
assert_atan2_ulp(15, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(-1, 0, -1.5707963267948966)
assert_atan2_ulp(-1, 1, -0.7853981633974483)
assert_atan2_ulp(-1, 2, -0.4636476090008061)
assert_atan2_ulp(-1, 3, -0.3217505543966422)
assert_atan2_ulp(-1, 5, -0.19739555984988075)
assert_atan2_ulp(-1, 6, -0.16514867741462683)
assert_atan2_ulp(-1, 7, -0.14189705460416394)
assert_atan2_ulp(-1, 13, -0.07677189126977804)
assert_atan2_ulp(-1, 14, -0.07130746478529032)
assert_atan2_ulp(-1, 15, -0.06656816377582381)
assert_atan2_ulp(-1, -1, -2.356194490192345)
assert_atan2_ulp(-1, -2, -2.677945044588987)
assert_atan2_ulp(-1, -8, -3.017237659043032)
assert_atan2_ulp(-1, -15, -3.0750244898139694)
assert_atan2_ulp(-1, 0.12, -1.4513674007765582)
assert_atan2_ulp(-1, 0.23, -1.3447279388010127)
assert_atan2_ulp(-1, 0.34, -1.2430578200143412)
assert_atan2_ulp(-1, 0.78, -0.9083700329617455)
assert_atan2_ulp(-1, 0.89, -0.8435336387982063)
assert_atan2_ulp(-1, 0.9, -0.83798122500839)
assert_atan2_ulp(-1, -0.87, -2.286787441211197)
assert_atan2_ulp(-1, -0.76, -2.220666776206844)
assert_atan2_ulp(-1, -0.32, -1.8804992713373527)
assert_atan2_ulp(-1, -0.21, -1.7777885210147177)
assert_atan2_ulp(-1, -0.1, -1.6704649792860586)
assert_atan2_ulp(-1, 0.12345, -1.4479677761074812)
assert_atan2_ulp(-1, 0.23456, -1.3404013799141725)
assert_atan2_ulp(-1, 0.34567, -1.2379841642649547)
assert_atan2_ulp(-1, 0.45678, -1.1423184755693105)
assert_atan2_ulp(-1, 0.56789, -1.0543218170106494)
assert_atan2_ulp(-1, -0.98765, -2.3499812026035287)
assert_atan2_ulp(-1, -0.87654, -2.290497873432717)
assert_atan2_ulp(-1, -0.76543, -2.224099719663926)
assert_atan2_ulp(-1, -0.10987, -1.6802274059489555)
assert_atan2_ulp(-1, 1.234, -0.6810338778357072)
assert_atan2_ulp(-1, 2.345, -0.40308905838988207)
assert_atan2_ulp(-1, 3.456, -0.281659450883516)
assert_atan2_ulp(-1, 4.567, -0.21556012355748172)
assert_atan2_ulp(-1, 5.678, -0.17433057974616387)
assert_atan2_ulp(-1, 11.234, -0.08878148781735883)
assert_atan2_ulp(-1, -1.234, -2.460558775754086)
assert_atan2_ulp(-1, -2.345, -2.7385035951999113)
assert_atan2_ulp(-1, -3.456, -2.8599332027062774)
assert_atan2_ulp(-1, -10.123, -3.043127169842129)
assert_atan2_ulp(-1, -13.456, -3.0674127259575354)
assert_atan2_ulp(-1, 3.1415926, -0.30816907604622823)
assert_atan2_ulp(-1, 2.7182818, -0.3525134251700204)
assert_atan2_ulp(-1, 1.6180339, -0.5535743834269139)
assert_atan2_ulp(-1, 1.4142136, -0.6154796961280858)
assert_atan2_ulp(-1, 1.7320508, -0.5235987774905182)
assert_atan2_ulp(-1, 0.5772157, -1.047298483969844)
assert_atan2_ulp(-1, 0.6931472, -0.964684378930889)
assert_atan2_ulp(-1, 0.4342945, -1.1610795674607026)
assert_atan2_ulp(-1, 0.0000001, -1.5707962267948967)
assert_atan2_ulp(-1, 1000000000, -0.000000001)
assert_atan2_ulp(-1, 31415926535897.125, -0.000000000000031830988618379885)
assert_atan2_ulp(-1, -27182818284590.566, -3.1415926535897563)
assert_atan2_ulp(-1, @double.min_value, -3.141592653589793)
assert_atan2_ulp(-1, @double.infinity, -0)
assert_atan2_ulp(-1, @double.neg_infinity, -3.141592653589793)
assert_atan2_ulp(-1, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(-2, 0, -1.5707963267948966)
assert_atan2_ulp(-2, 1, -1.1071487177940904)
assert_atan2_ulp(-2, 2, -0.7853981633974483)
assert_atan2_ulp(-2, 3, -0.5880026035475675)
assert_atan2_ulp(-2, 5, -0.3805063771123649)
assert_atan2_ulp(-2, 6, -0.3217505543966422)
assert_atan2_ulp(-2, 7, -0.27829965900511133)
assert_atan2_ulp(-2, 13, -0.15264932839526518)
assert_atan2_ulp(-2, 14, -0.14189705460416394)
assert_atan2_ulp(-2, 15, -0.13255153229667402)
assert_atan2_ulp(-2, -1, -2.0344439357957027)
assert_atan2_ulp(-2, -2, -2.356194490192345)
assert_atan2_ulp(-2, -8, -2.896613990462929)
assert_atan2_ulp(-2, -15, -3.0090411212931194)
assert_atan2_ulp(-2, 0.12, -1.5108681716736887)
assert_atan2_ulp(-2, 0.23, -1.4562993000274465)
assert_atan2_ulp(-2, 0.34, -1.4024061696473666)
assert_atan2_ulp(-2, 0.78, -1.1989402529463153)
assert_atan2_ulp(-2, 0.89, -1.152108175356535)
assert_atan2_ulp(-2, 0.9, -1.1479424006619559)
assert_atan2_ulp(-2, -0.87, -1.9811064826908409)
assert_atan2_ulp(-2, -0.76, -1.933943336741073)
assert_atan2_ulp(-2, -0.32, -1.729451588981298)
assert_atan2_ulp(-2, -0.21, -1.6754129844274164)
assert_atan2_ulp(-2, -0.1, -1.6207547225168393)
assert_atan2_ulp(-2, 0.12345, -1.5091495383306528)
assert_atan2_ulp(-2, 0.23456, -1.4540496454154495)
assert_atan2_ulp(-2, 0.34567, -1.399652096844507)
assert_atan2_ulp(-2, 0.45678, -1.3462575856549652)
assert_atan2_ulp(-2, 0.56789, -1.2941331858871057)
assert_atan2_ulp(-2, -0.98765, -2.0294917442658744)
assert_atan2_ulp(-2, -0.87654, -1.9838528806934157)
assert_atan2_ulp(-2, -0.76543, -1.9363136176713969)
assert_atan2_ulp(-2, -0.10987, -1.6256761647025755)
assert_atan2_ulp(-2, 1.234, -1.0179705151849427)
assert_atan2_ulp(-2, 2.345, -0.7061627895165192)
assert_atan2_ulp(-2, 3.456, -0.5246132565946418)
assert_atan2_ulp(-2, 4.567, -0.41276646877822837)
assert_atan2_ulp(-2, 5.678, -0.33866603657315836)
assert_atan2_ulp(-2, 11.234, -0.1761850571581438)
assert_atan2_ulp(-2, -1.234, -2.1236221384048504)
assert_atan2_ulp(-2, -2.345, -2.435429864073274)
assert_atan2_ulp(-2, -3.456, -2.6169793969951516)
assert_atan2_ulp(-2, -10.123, -2.946534825868303)
assert_atan2_ulp(-2, -13.456, -2.9940403033215612)
assert_atan2_ulp(-2, 3.1415926, -0.5669115126686695)
assert_atan2_ulp(-2, 2.7182818, -0.6343243242259863)
assert_atan2_ulp(-2, 1.6180339, -0.8905813767345983)
assert_atan2_ulp(-2, 1.4142136, -0.9553166055822078)
assert_atan2_ulp(-2, 1.7320508, -0.8570719500126673)
assert_atan2_ulp(-2, 0.5772157, -1.2898235352623406)
assert_atan2_ulp(-2, 0.6931472, -1.237177234700603)
assert_atan2_ulp(-2, 0.4342945, -1.3569686960985528)
assert_atan2_ulp(-2, 0.0000001, -1.5707962767948966)
assert_atan2_ulp(-2, 1000000000, -0.000000002)
assert_atan2_ulp(-2, 31415926535897.125, -0.00000000000006366197723675977)
assert_atan2_ulp(-2, -27182818284590.566, -3.14159265358972)
assert_atan2_ulp(-2, @double.min_value, -3.141592653589793)
assert_atan2_ulp(-2, @double.infinity, -0)
assert_atan2_ulp(-2, @double.neg_infinity, -3.141592653589793)
assert_atan2_ulp(-2, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(-8, 0, -1.5707963267948966)
assert_atan2_ulp(-8, 1, -1.446441332248135)
assert_atan2_ulp(-8, 2, -1.3258176636680326)
assert_atan2_ulp(-8, 3, -1.2120256565243244)
assert_atan2_ulp(-8, 5, -1.0121970114513341)
assert_atan2_ulp(-8, 6, -0.9272952180016122)
assert_atan2_ulp(-8, 7, -0.8519663271732721)
assert_atan2_ulp(-8, 13, -0.5516549825285468)
assert_atan2_ulp(-8, 14, -0.5191461142465229)
assert_atan2_ulp(-8, 15, -0.4899573262537283)
assert_atan2_ulp(-8, -1, -1.695151321341658)
assert_atan2_ulp(-8, -2, -1.8157749899217608)
assert_atan2_ulp(-8, -8, -2.356194490192345)
assert_atan2_ulp(-8, -15, -2.651635327336065)
assert_atan2_ulp(-8, 0.12, -1.555797451643046)
assert_atan2_ulp(-8, 0.23, -1.5420542440927407)
assert_atan2_ulp(-8, 0.34, -1.5283218876407099)
assert_atan2_ulp(-8, 0.78, -1.4736035296063161)
assert_atan2_ulp(-8, 0.89, -1.4600019125912678)
assert_atan2_ulp(-8, 0.9, -1.4587673643689087)
assert_atan2_ulp(-8, -0.87, -1.6791206305598263)
assert_atan2_ulp(-8, -0.76, -1.6655120727833723)
assert_atan2_ulp(-8, -0.32, -1.6107750139181867)
assert_atan2_ulp(-8, -0.21, -1.5970402999895328)
assert_atan2_ulp(-8, -0.1, -1.5832956758142582)
assert_atan2_ulp(-8, 0.12345, -1.55536630146756)
assert_atan2_ulp(-8, 0.23456, -1.5414847242311351)
assert_atan2_ulp(-8, 0.34567, -1.52761443690159)
assert_atan2_ulp(-8, 0.45678, -1.5137607540253308)
assert_atan2_ulp(-8, 0.56789, -1.499928951957119)
assert_atan2_ulp(-8, -0.98765, -1.6936310336580442)
assert_atan2_ulp(-8, -0.87654, -1.679928504191489)
assert_atan2_ulp(-8, -0.76543, -1.6661847087688302)
assert_atan2_ulp(-8, -0.10987, -1.5845292134247795)
assert_atan2_ulp(-8, 1.234, -1.4177525136922888)
assert_atan2_ulp(-8, 2.345, -1.285658745036412)
assert_atan2_ulp(-8, 3.456, -1.1630115881175067)
assert_atan2_ulp(-8, 4.567, -1.0520676197520096)
assert_atan2_ulp(-8, 5.678, -0.9535566670118577)
assert_atan2_ulp(-8, 11.234, -0.6188165565365474)
assert_atan2_ulp(-8, -1.234, -1.7238401398975043)
assert_atan2_ulp(-8, -2.345, -1.8559339085533813)
assert_atan2_ulp(-8, -3.456, -1.9785810654722864)
assert_atan2_ulp(-8, -10.123, -2.472806975951332)
assert_atan2_ulp(-8, -13.456, -2.605204682748091)
assert_atan2_ulp(-8, 3.1415926, -1.1965996520759297)
assert_atan2_ulp(-8, 2.7182818, -1.2432503523348235)
assert_atan2_ulp(-8, 1.6180339, -1.3712341735127653)
assert_atan2_ulp(-8, 1.4142136, -1.3958272765683708)
assert_atan2_ulp(-8, 1.7320508, -1.3575808178732134)
assert_atan2_ulp(-8, 0.5772157, -1.4987691800961003)
assert_atan2_ulp(-8, 0.6931472, -1.4843687683647306)
assert_atan2_ulp(-8, 0.4342945, -1.5165627489903424)
assert_atan2_ulp(-8, 0.0000001, -1.5707963142948966)
assert_atan2_ulp(-8, 1000000000, -0.000000008)
assert_atan2_ulp(-8, 31415926535897.125, -0.0000000000002546479089470391)
assert_atan2_ulp(-8, -27182818284590.566, -3.141592653589499)
assert_atan2_ulp(-8, @double.min_value, -3.141592653589793)
assert_atan2_ulp(-8, @double.infinity, -0)
assert_atan2_ulp(-8, @double.neg_infinity, -3.141592653589793)
assert_atan2_ulp(-8, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(-15, 0, -1.5707963267948966)
assert_atan2_ulp(-15, 1, -1.5042281630190728)
assert_atan2_ulp(-15, 2, -1.4382447944982226)
assert_atan2_ulp(-15, 3, -1.373400766945016)
assert_atan2_ulp(-15, 5, -1.2490457723982544)
assert_atan2_ulp(-15, 6, -1.1902899496825317)
assert_atan2_ulp(-15, 7, -1.1341691669813554)
assert_atan2_ulp(-15, 13, -0.8567056281827387)
assert_atan2_ulp(-15, 14, -0.8198672643969563)
assert_atan2_ulp(-15, 15, -0.7853981633974483)
assert_atan2_ulp(-15, -1, -1.6373644905707205)
assert_atan2_ulp(-15, -2, -1.7033478590915707)
assert_atan2_ulp(-15, -8, -2.060753653048625)
assert_atan2_ulp(-15, -15, -2.356194490192345)
assert_atan2_ulp(-15, 0.12, -1.56279649745501)
assert_atan2_ulp(-15, 0.23, -1.5554641949710872)
assert_atan2_ulp(-15, 0.34, -1.548133540808559)
assert_atan2_ulp(-15, 0.78, -1.5188431202339827)
assert_atan2_ulp(-15, 0.89, -1.5115324733283988)
assert_atan2_ulp(-15, 0.9, -1.5108681716736887)
assert_atan2_ulp(-15, -0.87, -1.6287314204183136)
assert_atan2_ulp(-15, -0.76, -1.6214197044643055)
assert_atan2_ulp(-15, -0.32, -1.5921264246660018)
assert_atan2_ulp(-15, -0.21, -1.5847954122357797)
assert_atan2_ulp(-15, -0.1, -1.5774628946987648)
assert_atan2_ulp(-15, 0.12345, -1.562566512601268)
assert_atan2_ulp(-15, 0.23456, -1.5551602678537955)
assert_atan2_ulp(-15, 0.34567, -1.5477557381701565)
assert_atan2_ulp(-15, 0.45678, -1.540353734520945)
assert_atan2_ulp(-15, 0.56789, -1.5329550662165663)
assert_atan2_ulp(-15, -0.98765, -1.6365447556935881)
assert_atan2_ulp(-15, -0.87654, -1.6291659476529308)
assert_atan2_ulp(-15, -0.76543, -1.6217807709284022)
assert_atan2_ulp(-15, -0.10987, -1.578120862474513)
assert_atan2_ulp(-15, 1.234, -1.4887144983747367)
assert_atan2_ulp(-15, 2.345, -1.4157182385901854)
assert_atan2_ulp(-15, 3.456, -1.3443480688867495)
assert_atan2_ulp(-15, 4.567, -1.2752467273926398)
assert_atan2_ulp(-15, 5.678, -1.208931543771725)
assert_atan2_ulp(-15, 11.234, -0.9279782342664493)
assert_atan2_ulp(-15, -1.234, -1.6528781552150564)
assert_atan2_ulp(-15, -2.345, -1.725874414999608)
assert_atan2_ulp(-15, -3.456, -1.7972445847030438)
assert_atan2_ulp(-15, -10.123, -2.1644543891588395)
assert_atan2_ulp(-15, -13.456, -2.301988436616457)
assert_atan2_ulp(-15, 3.1415926, -1.3643410126365612)
assert_atan2_ulp(-15, 2.7182818, -1.391523102659299)
assert_atan2_ulp(-15, 1.6180339, -1.4633428803349164)
assert_atan2_ulp(-15, 1.4142136, -1.4767932905009602)
assert_atan2_ulp(-15, 1.7320508, -1.4558354067921426)
assert_atan2_ulp(-15, 0.5772157, -1.5323342573988419)
assert_atan2_ulp(-15, 0.6931472, -1.524619362711518)
assert_atan2_ulp(-15, 0.4342945, -1.5418514462373436)
assert_atan2_ulp(-15, 0.0000001, -1.57079632012823)
assert_atan2_ulp(-15, 1000000000, -0.000000015)
assert_atan2_ulp(-15, 31415926535897.125, -0.0000000000004774648292756982)
assert_atan2_ulp(-15, -27182818284590.566, -3.1415926535892416)
assert_atan2_ulp(-15, @double.min_value, -3.141592653589793)
assert_atan2_ulp(-15, @double.infinity, -0)
assert_atan2_ulp(-15, @double.neg_infinity, -3.141592653589793)
assert_atan2_ulp(-15, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(0.12, 0, 1.5707963267948966)
assert_atan2_ulp(0.12, 1, 0.11942892601833845)
assert_atan2_ulp(0.12, 2, 0.05992815512120788)
assert_atan2_ulp(0.12, 3, 0.03997868712329004)
assert_atan2_ulp(0.12, 5, 0.023995393591869883)
assert_atan2_ulp(0.12, 6, 0.01999733397315053)
assert_atan2_ulp(0.12, 7, 0.01714117813860865)
assert_atan2_ulp(0.12, 13, 0.009230507068477825)
assert_atan2_ulp(0.12, 14, 0.00857121866814493)
assert_atan2_ulp(0.12, 15, 0.007999829339886633)
assert_atan2_ulp(0.12, -1, 3.0221637275714546)
assert_atan2_ulp(0.12, -2, 3.0816644984685855)
assert_atan2_ulp(0.12, -8, 3.1265937784379427)
assert_atan2_ulp(0.12, -15, 3.1335928242499067)
assert_atan2_ulp(0.12, 0.12, 0.7853981633974483)
assert_atan2_ulp(0.12, 0.23, 0.4808872801953358)
assert_atan2_ulp(0.12, 0.34, 0.3392926144540446)
assert_atan2_ulp(0.12, 0.78, 0.15264932839526515)
assert_atan2_ulp(0.12, 0.89, 0.13402320158006337)
assert_atan2_ulp(0.12, 0.9, 0.13255153229667402)
assert_atan2_ulp(0.12, -0.87, 3.0045264792796056)
assert_atan2_ulp(0.12, -0.76, 2.984990776607778)
assert_atan2_ulp(0.12, -0.32, 2.782821983319221)
assert_atan2_ulp(0.12, -0.21, 2.62244653934327)
assert_atan2_ulp(0.12, -0.1, 2.2655346029916)
assert_atan2_ulp(0.12, 0.12345, 0.7712278241958928)
assert_atan2_ulp(0.12, 0.23456, 0.4728814584493259)
assert_atan2_ulp(0.12, 0.34567, 0.33413529380159074)
assert_atan2_ulp(0.12, 0.45678, 0.2569034029302969)
assert_atan2_ulp(0.12, 0.56789, 0.20824512313643206)
assert_atan2_ulp(0.12, -0.98765, 3.0206847605344285)
assert_atan2_ulp(0.12, -0.87654, 3.005536530805526)
assert_atan2_ulp(0.12, -0.76543, 2.986083832213558)
assert_atan2_ulp(0.12, -0.10987, 2.3121545977874813)
assert_atan2_ulp(0.12, 1.234, 0.09693992732160936)
assert_atan2_ulp(0.12, 2.345, 0.051128110203349494)
assert_atan2_ulp(0.12, 3.456, 0.03470827822527492)
assert_atan2_ulp(0.12, 4.567, 0.02626940999648622)
assert_atan2_ulp(0.12, 5.678, 0.021131056464670814)
assert_atan2_ulp(0.12, 11.234, 0.010681452397033504)
assert_atan2_ulp(0.12, -1.234, 3.044652726268184)
assert_atan2_ulp(0.12, -2.345, 3.0904645433864437)
assert_atan2_ulp(0.12, -3.456, 3.106884375364518)
assert_atan2_ulp(0.12, -10.123, 3.129739015379994)
assert_atan2_ulp(0.12, -13.456, 3.1326749351775556)
assert_atan2_ulp(0.12, 3.1415926, 0.03817862635440019)
assert_atan2_ulp(0.12, 2.7182818, 0.04411688953620529)
assert_atan2_ulp(0.12, 1.6180339, 0.07402855452846589)
assert_atan2_ulp(0.12, 1.4142136, 0.0846500400026408)
assert_atan2_ulp(0.12, 1.7320508, 0.06917149951347785)
assert_atan2_ulp(0.12, 0.5772157, 0.20497482423538158)
assert_atan2_ulp(0.12, 0.6931472, 0.1714242512573564)
assert_atan2_ulp(0.12, 0.4342945, 0.2695838845972717)
assert_atan2_ulp(0.12, 0.0000001, 1.5707954934615633)
assert_atan2_ulp(0.12, 1000000000, 0.00000000012)
assert_atan2_ulp(0.12, 31415926535897.125, 0.000000000000003819718634205586)
assert_atan2_ulp(0.12, -27182818284590.566, 3.1415926535897887)
assert_atan2_ulp(0.12, @double.min_value, 3.141592653589793)
assert_atan2_ulp(0.12, @double.infinity, 0)
assert_atan2_ulp(0.12, @double.neg_infinity, 3.141592653589793)
assert_atan2_ulp(0.12, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(0.23, 0, 1.5707963267948966)
assert_atan2_ulp(0.23, 1, 0.22606838799388393)
assert_atan2_ulp(0.23, 2, 0.11449702676745016)
assert_atan2_ulp(0.23, 3, 0.07651698431633915)
assert_atan2_ulp(0.23, 5, 0.045967595797104494)
assert_atan2_ulp(0.23, 6, 0.038314573635789884)
assert_atan2_ulp(0.23, 7, 0.03284532640929438)
assert_atan2_ulp(0.23, 13, 0.01769046203680495)
assert_atan2_ulp(0.23, 14, 0.016427093655239228)
assert_atan2_ulp(0.23, 15, 0.015332131823809379)
assert_atan2_ulp(0.23, -1, 2.9155242655959093)
assert_atan2_ulp(0.23, -2, 3.027095626822343)
assert_atan2_ulp(0.23, -8, 3.1128505708876375)
assert_atan2_ulp(0.23, -15, 3.126260521765984)
assert_atan2_ulp(0.23, 0.12, 1.089909046599561)
assert_atan2_ulp(0.23, 0.23, 0.7853981633974483)
assert_atan2_ulp(0.23, 0.34, 0.5947592574833528)
assert_atan2_ulp(0.23, 0.78, 0.28674540413194144)
assert_atan2_ulp(0.23, 0.89, 0.2528940650955976)
assert_atan2_ulp(0.23, 0.9, 0.2502005477776407)
assert_atan2_ulp(0.23, -0.87, 2.8831377173817745)
assert_atan2_ulp(0.23, -0.76, 2.8477233185573256)
assert_atan2_ulp(0.23, -0.32, 2.518393323655727)
assert_atan2_ulp(0.23, -0.21, 2.310771210770768)
assert_atan2_ulp(0.23, -0.1, 1.9809236673363877)
assert_atan2_ulp(0.23, 0.12345, 1.0781911790745198)
assert_atan2_ulp(0.23, 0.23456, 0.7755827389993639)
assert_atan2_ulp(0.23, 0.34567, 0.5871074861855493)
assert_atan2_ulp(0.23, 0.45678, 0.4664633698616812)
assert_atan2_ulp(0.23, 0.56789, 0.3848161596391686)
assert_atan2_ulp(0.23, -0.98765, 2.912794466024165)
assert_atan2_ulp(0.23, -0.87654, 2.884982250929692)
assert_atan2_ulp(0.23, -0.76543, 2.849691244254415)
assert_atan2_ulp(0.23, -0.10987, 2.016441774548498)
assert_atan2_ulp(0.23, 1.234, 0.1842713134341017)
assert_atan2_ulp(0.23, 2.345, 0.09776831694087237)
assert_atan2_ulp(0.23, 3.456, 0.06645293427758213)
assert_atan2_ulp(0.23, 4.567, 0.050318775743471524)
assert_atan2_ulp(0.23, 5.678, 0.040485087417602955)
assert_atan2_ulp(0.23, 11.234, 0.020470702506832257)
assert_atan2_ulp(0.23, -1.234, 2.9573213401556915)
assert_atan2_ulp(0.23, -2.345, 3.043824336648921)
assert_atan2_ulp(0.23, -3.456, 3.075139719312211)
assert_atan2_ulp(0.23, -10.123, 3.1188760246091527)
assert_atan2_ulp(0.23, -13.456, 3.124501571184939)
assert_atan2_ulp(0.23, 3.1415926, 0.07308089263649963)
assert_atan2_ulp(0.23, 2.7182818, 0.08441121553925918)
assert_atan2_ulp(0.23, 1.6180339, 0.1412018543848218)
assert_atan2_ulp(0.23, 1.4142136, 0.16122299539824858)
assert_atan2_ulp(0.23, 1.7320508, 0.1320182042986766)
assert_atan2_ulp(0.23, 0.5772157, 0.3791820216290044)
assert_atan2_ulp(0.23, 0.6931472, 0.3203878015771801)
assert_atan2_ulp(0.23, 0.4342945, 0.48704199062465103)
assert_atan2_ulp(0.23, 0.0000001, 1.570795892012288)
assert_atan2_ulp(0.23, 1000000000, 0.00000000023)
assert_atan2_ulp(0.23, 31415926535897.125, 0.000000000000007321127382227374)
assert_atan2_ulp(0.23, -27182818284590.566, 3.1415926535897847)
assert_atan2_ulp(0.23, @double.min_value, 3.141592653589793)
assert_atan2_ulp(0.23, @double.infinity, 0)
assert_atan2_ulp(0.23, @double.neg_infinity, 3.141592653589793)
assert_atan2_ulp(0.23, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(0.34, 0, 1.5707963267948966)
assert_atan2_ulp(0.34, 1, 0.3277385067805555)
assert_atan2_ulp(0.34, 2, 0.16839015714752992)
assert_atan2_ulp(0.34, 3, 0.11285180433688263)
assert_atan2_ulp(0.34, 5, 0.06789547916306107)
assert_atan2_ulp(0.34, 6, 0.05660612893896759)
assert_atan2_ulp(0.34, 7, 0.04853328624065319)
assert_atan2_ulp(0.34, 13, 0.02614788531680209)
assert_atan2_ulp(0.34, 14, 0.024280941436217982)
assert_atan2_ulp(0.34, 15, 0.022662785986337624)
assert_atan2_ulp(0.34, -1, 2.8138541468092377)
assert_atan2_ulp(0.34, -2, 2.9732024964422634)
assert_atan2_ulp(0.34, -8, 3.0991182144356064)
assert_atan2_ulp(0.34, -15, 3.118929867603456)
assert_atan2_ulp(0.34, 0.12, 1.2315037123408519)
assert_atan2_ulp(0.34, 0.23, 0.9760370693115439)
assert_atan2_ulp(0.34, 0.34, 0.7853981633974483)
assert_atan2_ulp(0.34, 0.78, 0.4110645473898644)
assert_atan2_ulp(0.34, 0.89, 0.3649130991617934)
assert_atan2_ulp(0.34, 0.9, 0.36120375549368167)
assert_atan2_ulp(0.34, -0.87, 2.7690383951349293)
assert_atan2_ulp(0.34, -0.76, 2.7209293044567584)
assert_atan2_ulp(0.34, -0.32, 2.32590073027357)
assert_atan2_ulp(0.34, -0.21, 2.1240906521171894)
assert_atan2_ulp(0.34, -0.1, 1.856847768512215)
assert_atan2_ulp(0.34, 0.12345, 1.222509521765431)
assert_atan2_ulp(0.34, 0.23456, 0.9668930542046579)
assert_atan2_ulp(0.34, 0.34567, 0.7771290678192532)
assert_atan2_ulp(0.34, 0.45678, 0.6398693846157211)
assert_atan2_ulp(0.34, 0.56789, 0.5394685878623862)
assert_atan2_ulp(0.34, -0.98765, 2.8100481375413295)
assert_atan2_ulp(0.34, -0.87654, 2.771570416399657)
assert_atan2_ulp(0.34, -0.76543, 2.7235768374160454)
assert_atan2_ulp(0.34, -0.10987, 1.8833513921979284)
assert_atan2_ulp(0.34, 1.234, 0.26885585305133386)
assert_atan2_ulp(0.34, 2.345, 0.143985980243746)
assert_atan2_ulp(0.34, 3.456, 0.09806406934104266)
assert_atan2_ulp(0.34, 4.567, 0.07431003829420241)
assert_atan2_ulp(0.34, 5.678, 0.05980882337953088)
assert_atan2_ulp(0.34, 11.234, 0.03025603037494319)
assert_atan2_ulp(0.34, -1.234, 2.8727368005384593)
assert_atan2_ulp(0.34, -2.345, 2.997606673346047)
assert_atan2_ulp(0.34, -3.456, 3.0435285842487505)
assert_atan2_ulp(0.34, -10.123, 3.108018393236482)
assert_atan2_ulp(0.34, -13.456, 3.1163304902271607)
assert_atan2_ulp(0.34, 3.1415926, 0.10780576984975383)
assert_atan2_ulp(0.34, 2.7182818, 0.12443278953931272)
assert_atan2_ulp(0.34, 1.6180339, 0.20711820151662816)
assert_atan2_ulp(0.34, 1.4142136, 0.23593856984827813)
assert_atan2_ulp(0.34, 1.7320508, 0.1938344754051852)
assert_atan2_ulp(0.34, 0.5772157, 0.532317664231936)
assert_atan2_ulp(0.34, 0.6931472, 0.45603190577864317)
assert_atan2_ulp(0.34, 0.4342945, 0.6642137112731722)
assert_atan2_ulp(0.34, 0.0000001, 1.5707960326772497)
assert_atan2_ulp(0.34, 1000000000, 0.00000000034)
assert_atan2_ulp(0.34, 31415926535897.125, 0.000000000000010822536130249161)
assert_atan2_ulp(0.34, -27182818284590.566, 3.1415926535897807)
assert_atan2_ulp(0.34, @double.min_value, 3.141592653589793)
assert_atan2_ulp(0.34, @double.infinity, 0)
assert_atan2_ulp(0.34, @double.neg_infinity, 3.141592653589793)
assert_atan2_ulp(0.34, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(0.78, 0, 1.5707963267948966)
assert_atan2_ulp(0.78, 1, 0.6624262938331512)
assert_atan2_ulp(0.78, 2, 0.37185607384858127)
assert_atan2_ulp(0.78, 3, 0.25436805855326594)
assert_atan2_ulp(0.78, 5, 0.15475269067802364)
assert_atan2_ulp(0.78, 6, 0.12927500404814307)
assert_atan2_ulp(0.78, 7, 0.11097079908773164)
assert_atan2_ulp(0.78, 13, 0.05992815512120789)
assert_atan2_ulp(0.78, 14, 0.05565674561151371)
assert_atan2_ulp(0.78, 15, 0.05195320656091388)
assert_atan2_ulp(0.78, -1, 2.479166359756642)
assert_atan2_ulp(0.78, -2, 2.769736579741212)
assert_atan2_ulp(0.78, -8, 3.044399856401213)
assert_atan2_ulp(0.78, -15, 3.0896394470288793)
assert_atan2_ulp(0.78, 0.12, 1.4181469983996315)
assert_atan2_ulp(0.78, 0.23, 1.2840509226629553)
assert_atan2_ulp(0.78, 0.34, 1.1597317794050321)
assert_atan2_ulp(0.78, 0.78, 0.7853981633974483)
assert_atan2_ulp(0.78, 0.89, 0.7196249120138116)
assert_atan2_ulp(0.78, 0.9, 0.714090698612158)
assert_atan2_ulp(0.78, -0.87, 2.4106859464330763)
assert_atan2_ulp(0.78, -0.76, 2.3432082072721725)
assert_atan2_ulp(0.78, -0.32, 1.9601130486280374)
assert_atan2_ulp(0.78, -0.21, 1.8337910584758161)
assert_atan2_ulp(0.78, -0.1, 1.698305885010135)
assert_atan2_ulp(0.78, 0.12345, 1.4138290862924197)
assert_atan2_ulp(0.78, 0.23456, 1.2786809939912132)
assert_atan2_ulp(0.78, 0.34567, 1.153639513364399)
assert_atan2_ulp(0.78, 0.45678, 1.0410208990781802)
assert_atan2_ulp(0.78, 0.56789, 0.9414826329798451)
assert_atan2_ulp(0.78, -0.98765, 2.4731309078386903)
assert_atan2_ulp(0.78, -0.87654, 2.414406744690702)
assert_atan2_ulp(0.78, -0.76543, 2.346766972707758)
assert_atan2_ulp(0.78, -0.10987, 1.7107346308272906)
assert_atan2_ulp(0.78, 1.234, 0.563682048221981)
assert_atan2_ulp(0.78, 2.345, 0.32111075921842464)
assert_atan2_ulp(0.78, 3.456, 0.22197532618383317)
assert_atan2_ulp(0.78, 4.567, 0.16915830747733823)
assert_atan2_ulp(0.78, 5.678, 0.13651784379332907)
assert_atan2_ulp(0.78, 11.234, 0.0693208297514416)
assert_atan2_ulp(0.78, -1.234, 2.5779106053678125)
assert_atan2_ulp(0.78, -2.345, 2.8204818943713685)
assert_atan2_ulp(0.78, -3.456, 2.9196173274059602)
assert_atan2_ulp(0.78, -10.123, 3.0646923431605826)
assert_atan2_ulp(0.78, -13.456, 3.0836907421037085)
assert_atan2_ulp(0.78, 3.1415926, 0.24336080145260527)
assert_atan2_ulp(0.78, 2.7182818, 0.27943801246671723)
assert_atan2_ulp(0.78, 1.6180339, 0.4491981863444598)
assert_atan2_ulp(0.78, 1.4142136, 0.50402729451969)
assert_atan2_ulp(0.78, 1.7320508, 0.42313099090026757)
assert_atan2_ulp(0.78, 0.5772157, 0.933712991567155)
assert_atan2_ulp(0.78, 0.6931472, 0.844287306949804)
assert_atan2_ulp(0.78, 0.4342945, 1.0627566785928018)
assert_atan2_ulp(0.78, 0.0000001, 1.5707961985897685)
assert_atan2_ulp(0.78, 1000000000, 0.00000000078)
assert_atan2_ulp(0.78, 31415926535897.125, 0.00000000000002482817112233631)
assert_atan2_ulp(0.78, -27182818284590.566, 3.1415926535897647)
assert_atan2_ulp(0.78, @double.min_value, 3.141592653589793)
assert_atan2_ulp(0.78, @double.infinity, 0)
assert_atan2_ulp(0.78, @double.neg_infinity, 3.141592653589793)
assert_atan2_ulp(0.78, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(0.89, 0, 1.5707963267948966)
assert_atan2_ulp(0.89, 1, 0.7272626879966902)
assert_atan2_ulp(0.89, 2, 0.41868815143836163)
assert_atan2_ulp(0.89, 3, 0.2883958918854077)
assert_atan2_ulp(0.89, 5, 0.17615503127376975)
assert_atan2_ulp(0.89, 6, 0.1472595585755954)
assert_atan2_ulp(0.89, 7, 0.12646432522049866)
assert_atan2_ulp(0.89, 13, 0.06835487890961815)
assert_atan2_ulp(0.89, 14, 0.06348599799403985)
assert_atan2_ulp(0.89, 15, 0.05926385346649792)
assert_atan2_ulp(0.89, -1, 2.4143299655931028)
assert_atan2_ulp(0.89, -2, 2.7229045021514318)
assert_atan2_ulp(0.89, -8, 3.030798239386164)
assert_atan2_ulp(0.89, -15, 3.082328800123295)
assert_atan2_ulp(0.89, 0.12, 1.4367731252148332)
assert_atan2_ulp(0.89, 0.23, 1.317902261699299)
assert_atan2_ulp(0.89, 0.34, 1.2058832276331033)
assert_atan2_ulp(0.89, 0.78, 0.8511714147810849)
assert_atan2_ulp(0.89, 0.89, 0.7853981633974483)
assert_atan2_ulp(0.89, 0.9, 0.7798116293367924)
assert_atan2_ulp(0.89, -0.87, 2.344831342928054)
assert_atan2_ulp(0.89, -0.76, 2.2775690329267113)
assert_atan2_ulp(0.89, -0.32, 1.915953976637565)
assert_atan2_ulp(0.89, -0.21, 1.8025131679853472)
assert_atan2_ulp(0.89, -0.1, 1.6826865929665726)
assert_atan2_ulp(0.89, 0.12345, 1.4329679053524755)
assert_atan2_ulp(0.89, 0.23456, 1.3131054120703647)
assert_atan2_ulp(0.89, 0.34567, 1.2003356308777375)
assert_atan2_ulp(0.89, 0.45678, 1.0966161089647206)
assert_atan2_ulp(0.89, 0.56789, 1.0028473699954406)
assert_atan2_ulp(0.89, -0.98765, 2.408154176712815)
assert_atan2_ulp(0.89, -0.87654, 2.348575223414623)
assert_atan2_ulp(0.89, -0.76543, 2.281086710749429)
assert_atan2_ulp(0.89, -0.10987, 1.6936243241177429)
assert_atan2_ulp(0.89, 1.234, 0.6248338059461177)
assert_atan2_ulp(0.89, 2.345, 0.3627370517103474)
assert_atan2_ulp(0.89, 3.456, 0.2520466438373476)
assert_atan2_ulp(0.89, 4.567, 0.1924640929776697)
assert_atan2_ulp(0.89, 5.678, 0.15548023333921224)
assert_atan2_ulp(0.89, 11.234, 0.07905865939596735)
assert_atan2_ulp(0.89, -1.234, 2.5167588476436755)
assert_atan2_ulp(0.89, -2.345, 2.778855601879446)
assert_atan2_ulp(0.89, -3.456, 2.8895460097524457)
assert_atan2_ulp(0.89, -10.123, 3.0538995351230347)
assert_atan2_ulp(0.89, -13.456, 3.0755473526874484)
assert_atan2_ulp(0.89, 3.1415926, 0.2760622781766223)
assert_atan2_ulp(0.89, 2.7182818, 0.31641255918718414)
assert_atan2_ulp(0.89, 1.6180339, 0.50288181291664)
assert_atan2_ulp(0.89, 1.4142136, 0.5617033972231602)
assert_atan2_ulp(0.89, 1.7320508, 0.4746595848857791)
assert_atan2_ulp(0.89, 0.5772157, 0.9954362101412828)
assert_atan2_ulp(0.89, 0.6931472, 0.9091059196327895)
assert_atan2_ulp(0.89, 0.4342945, 1.1168178619575915)
assert_atan2_ulp(0.89, 0.0000001, 1.570796214435346)
assert_atan2_ulp(0.89, 1000000000, 0.00000000089)
assert_atan2_ulp(0.89, 31415926535897.125, 0.000000000000028329579870358098)
assert_atan2_ulp(0.89, -27182818284590.566, 3.1415926535897607)
assert_atan2_ulp(0.89, @double.min_value, 3.141592653589793)
assert_atan2_ulp(0.89, @double.infinity, 0)
assert_atan2_ulp(0.89, @double.neg_infinity, 3.141592653589793)
assert_atan2_ulp(0.89, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(0.9, 0, 1.5707963267948966)
assert_atan2_ulp(0.9, 1, 0.7328151017865067)
assert_atan2_ulp(0.9, 2, 0.4228539261329407)
assert_atan2_ulp(0.9, 3, 0.2914567944778671)
assert_atan2_ulp(0.9, 5, 0.17809293823119757)
assert_atan2_ulp(0.9, 6, 0.14888994760949725)
assert_atan2_ulp(0.9, 7, 0.12786991855999988)
assert_atan2_ulp(0.9, 13, 0.06912048084718227)
assert_atan2_ulp(0.9, 14, 0.06419737637313297)
assert_atan2_ulp(0.9, 15, 0.05992815512120789)
assert_atan2_ulp(0.9, -1, 2.408777551803287)
assert_atan2_ulp(0.9, -2, 2.7187387274568526)
assert_atan2_ulp(0.9, -8, 3.0295636911638053)
assert_atan2_ulp(0.9, -15, 3.0816644984685855)
assert_atan2_ulp(0.9, 0.12, 1.4382447944982226)
assert_atan2_ulp(0.9, 0.23, 1.320595779017256)
assert_atan2_ulp(0.9, 0.34, 1.209592571301215)
assert_atan2_ulp(0.9, 0.78, 0.8567056281827387)
assert_atan2_ulp(0.9, 0.89, 0.7909846974581043)
assert_atan2_ulp(0.9, 0.9, 0.7853981633974483)
assert_atan2_ulp(0.9, -0.87, 2.33924696038594)
assert_atan2_ulp(0.9, -0.76, 2.272056249661174)
assert_atan2_ulp(0.9, -0.32, 1.9124118174427038)
assert_atan2_ulp(0.9, -0.21, 1.800028260071892)
assert_atan2_ulp(0.9, -0.1, 1.6814535479687922)
assert_atan2_ulp(0.9, 0.12345, 1.434480327196771)
assert_atan2_ulp(0.9, 0.23456, 1.3158455332489194)
assert_atan2_ulp(0.9, 0.34567, 1.2040909049215531)
assert_atan2_ulp(0.9, 0.45678, 1.1011402292312436)
assert_atan2_ulp(0.9, 0.56789, 1.0079019818580017)
assert_atan2_ulp(0.9, -0.98765, 2.4025945582507724)
assert_atan2_ulp(0.9, -0.87654, 2.3429898134264575)
assert_atan2_ulp(0.9, -0.76543, 2.2755677002662416)
assert_atan2_ulp(0.9, -0.10987, 1.692273029128863)
assert_atan2_ulp(0.9, 1.234, 0.630144124243701)
assert_atan2_ulp(0.9, 2.345, 0.36645924197186636)
assert_atan2_ulp(0.9, 3.456, 0.25475830243589487)
assert_atan2_ulp(0.9, 4.567, 0.19457273187263555)
assert_atan2_ulp(0.9, 5.678, 0.15719871907352345)
assert_atan2_ulp(0.9, 11.234, 0.07994319993429032)
assert_atan2_ulp(0.9, -1.234, 2.511448529346092)
assert_atan2_ulp(0.9, -2.345, 2.7751334116179267)
assert_atan2_ulp(0.9, -3.456, 2.8868343511538983)
assert_atan2_ulp(0.9, -10.123, 3.052919347653184)
assert_atan2_ulp(0.9, -13.456, 3.074807463083629)
assert_atan2_ulp(0.9, 3.1415926, 0.2790064259530061)
assert_atan2_ulp(0.9, 2.7182818, 0.3197315497255292)
assert_atan2_ulp(0.9, 1.6180339, 0.5076142079799648)
assert_atan2_ulp(0.9, 1.4142136, 0.5667523137865671)
assert_atan2_ulp(0.9, 1.7320508, 0.4792163826326769)
assert_atan2_ulp(0.9, 0.5772157, 1.000525453053553)
assert_atan2_ulp(0.9, 0.6931472, 0.9145149390659274)
assert_atan2_ulp(0.9, 0.4342945, 1.1212063681402262)
assert_atan2_ulp(0.9, 0.0000001, 1.5707962156837856)
assert_atan2_ulp(0.9, 1000000000, 0.0000000009)
assert_atan2_ulp(0.9, 31415926535897.125, 0.000000000000028647889756541897)
assert_atan2_ulp(0.9, -27182818284590.566, 3.1415926535897603)
assert_atan2_ulp(0.9, @double.min_value, 3.141592653589793)
assert_atan2_ulp(0.9, @double.infinity, 0)
assert_atan2_ulp(0.9, @double.neg_infinity, 3.141592653589793)
assert_atan2_ulp(0.9, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(-0.87, 0, -1.5707963267948966)
assert_atan2_ulp(-0.87, 1, -0.7159911144163001)
assert_atan2_ulp(-0.87, 2, -0.4103101558959443)
assert_atan2_ulp(-0.87, 3, -0.2822574219814911)
assert_atan2_ulp(-0.87, 5, -0.1722752169535286)
assert_atan2_ulp(-0.87, 6, -0.14399642170889204)
assert_atan2_ulp(-0.87, 7, -0.12365163612573409)
assert_atan2_ulp(-0.87, 13, -0.06682343512372774)
assert_atan2_ulp(-0.87, 14, -0.06206304890454939)
assert_atan2_ulp(-0.87, 15, -0.057935093623416985)
assert_atan2_ulp(-0.87, -1, -2.425601539173493)
assert_atan2_ulp(-0.87, -2, -2.731282497693849)
assert_atan2_ulp(-0.87, -8, -3.0332683498248634)
assert_atan2_ulp(-0.87, -15, -3.0836575599663765)
assert_atan2_ulp(-0.87, 0.12, -1.433730152484709)
assert_atan2_ulp(-0.87, 0.23, -1.312341390586878)
assert_atan2_ulp(-0.87, 0.34, -1.1982420683400328)
assert_atan2_ulp(-0.87, 0.78, -0.8398896196381794)
assert_atan2_ulp(-0.87, 0.89, -0.7740350161331576)
assert_atan2_ulp(-0.87, 0.9, -0.7684506335910434)
assert_atan2_ulp(-0.87, -0.87, -2.356194490192345)
assert_atan2_ulp(-0.87, -0.76, -2.288811994348969)
assert_atan2_ulp(-0.87, -0.32, -1.9232539496216008)
assert_atan2_ulp(-0.87, -0.21, -1.8076450877418169)
assert_atan2_ulp(-0.87, -0.1, -1.68523663206496)
assert_atan2_ulp(-0.87, 0.12345, -1.429840777839198)
assert_atan2_ulp(-0.87, 0.23456, -1.307448778863457)
assert_atan2_ulp(-0.87, 0.34567, -1.1926008391012533)
assert_atan2_ulp(-0.87, 0.45678, -1.0873222935614588)
assert_atan2_ulp(-0.87, 0.56789, -0.9924923336540791)
assert_atan2_ulp(-0.87, -0.98765, -2.4194427222008152)
assert_atan2_ulp(-0.87, -0.87654, -2.3599390190511795)
assert_atan2_ulp(-0.87, -0.76543, -2.2923410439603833)
assert_atan2_ulp(-0.87, -0.10987, -1.6964186706992688)
assert_atan2_ulp(-0.87, 1.234, -0.6140900320026742)
assert_atan2_ulp(-0.87, 2.345, -0.3552610917927425)
assert_atan2_ulp(-0.87, 3.456, -0.24661198139678164)
assert_atan2_ulp(-0.87, 4.567, -0.18824162866094138)
assert_atan2_ulp(-0.87, 5.678, -0.15204049240622128)
assert_atan2_ulp(-0.87, 11.234, -0.077289207712413)
assert_atan2_ulp(-0.87, -1.234, -2.527502621587119)
assert_atan2_ulp(-0.87, -2.345, -2.7863315617970508)
assert_atan2_ulp(-0.87, -3.456, -2.894980672193012)
assert_atan2_ulp(-0.87, -10.123, -3.0558604151247084)
assert_atan2_ulp(-0.87, -13.456, -3.077027348366177)
assert_atan2_ulp(-0.87, 3.1415926, -0.2701592634731698)
assert_atan2_ulp(-0.87, 2.7182818, -0.309752941175357)
assert_atan2_ulp(-0.87, 1.6180339, -0.4933427465096282)
assert_atan2_ulp(-0.87, 1.4142136, -0.551508648630924)
assert_atan2_ulp(-0.87, 1.7320508, -0.4654817125406182)
assert_atan2_ulp(-0.87, 0.5772157, -0.9850126204469117)
assert_atan2_ulp(-0.87, 0.6931472, -0.8980580245287548)
assert_atan2_ulp(-0.87, 0.4342945, -1.107797663832416)
assert_atan2_ulp(-0.87, 0.0000001, -1.570796211852368)
assert_atan2_ulp(-0.87, 1000000000, -0.00000000087)
assert_atan2_ulp(-0.87, 31415926535897.125, -0.0000000000000276929600979905)
assert_atan2_ulp(-0.87, -27182818284590.566, -3.141592653589761)
assert_atan2_ulp(-0.87, @double.min_value, -3.141592653589793)
assert_atan2_ulp(-0.87, @double.infinity, -0)
assert_atan2_ulp(-0.87, @double.neg_infinity, -3.141592653589793)
assert_atan2_ulp(-0.87, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(-0.76, 0, -1.5707963267948966)
assert_atan2_ulp(-0.76, 1, -0.6498704494119476)
assert_atan2_ulp(-0.76, 2, -0.36314700994617627)
assert_atan2_ulp(-0.76, 3, -0.24811344909667657)
assert_atan2_ulp(-0.76, 5, -0.15084536162093976)
assert_atan2_ulp(-0.76, 6, -0.12599568216401255)
assert_atan2_ulp(-0.76, 7, -0.10814781615266286)
assert_atan2_ulp(-0.76, 13, -0.05839507237062178)
assert_atan2_ulp(-0.76, 14, -0.05423248281719459)
assert_atan2_ulp(-0.76, 15, -0.050623377669408956)
assert_atan2_ulp(-0.76, -1, -2.4917222041778455)
assert_atan2_ulp(-0.76, -2, -2.778445643643617)
assert_atan2_ulp(-0.76, -8, -3.0468769076013174)
assert_atan2_ulp(-0.76, -15, -3.090969275920384)
assert_atan2_ulp(-0.76, 0.12, -1.4141944498128813)
assert_atan2_ulp(-0.76, 0.23, -1.2769269917624289)
assert_atan2_ulp(-0.76, 0.34, -1.1501329776618616)
assert_atan2_ulp(-0.76, 0.78, -0.7724118804772758)
assert_atan2_ulp(-0.76, 0.89, -0.7067727061318146)
assert_atan2_ulp(-0.76, 0.9, -0.7012599228662774)
assert_atan2_ulp(-0.76, -0.87, -2.4235769860357212)
assert_atan2_ulp(-0.76, -0.76, -2.356194490192345)
assert_atan2_ulp(-0.76, -0.32, -1.9693187724613168)
assert_atan2_ulp(-0.76, -0.21, -1.8403854047158228)
assert_atan2_ulp(-0.76, -0.1, -1.7016237228689535)
assert_atan2_ulp(-0.76, 0.12345, -1.4097685198393874)
assert_atan2_ulp(-0.76, 0.23456, -1.271439584906505)
assert_atan2_ulp(-0.76, 0.34567, -1.1439339092297922)
assert_atan2_ulp(-0.76, 0.45678, -1.0296225242423858)
assert_atan2_ulp(-0.76, 0.56789, -0.9290744292650708)
assert_atan2_ulp(-0.76, -0.98765, -2.485725789865556)
assert_atan2_ulp(-0.76, -0.87654, -2.4272856974521613)
assert_atan2_ulp(-0.76, -0.76543, -2.359754127190072)
assert_atan2_ulp(-0.76, -0.10987, -1.7143674530634605)
assert_atan2_ulp(-0.76, 1.234, -0.5520166134683924)
assert_atan2_ulp(-0.76, 2.345, -0.31341206902109986)
assert_atan2_ulp(-0.76, 3.456, -0.21646198525894203)
assert_atan2_ulp(-0.76, 4.567, -0.1649001155278347)
assert_atan2_ulp(-0.76, 5.678, -0.13305908791118182)
assert_atan2_ulp(-0.76, 11.234, -0.06754884521248673)
assert_atan2_ulp(-0.76, -1.234, -2.589576040121401)
assert_atan2_ulp(-0.76, -2.345, -2.8281805845686936)
assert_atan2_ulp(-0.76, -3.456, -2.9251306683308513)
assert_atan2_ulp(-0.76, -10.123, -3.0666566762131615)
assert_atan2_ulp(-0.76, -13.456, -3.085172216498992)
assert_atan2_ulp(-0.76, 3.1415926, -0.23735538469873405)
assert_atan2_ulp(-0.76, 2.7182818, -0.2726269655501977)
assert_atan2_ulp(-0.76, 1.6180339, -0.4391199370909007)
assert_atan2_ulp(-0.76, 1.4142136, -0.4931189525868239)
assert_atan2_ulp(-0.76, 1.7320508, -0.4134895015727331)
assert_atan2_ulp(-0.76, 0.5772157, -0.9212464789832324)
assert_atan2_ulp(-0.76, 0.6931472, -0.8313712726379947)
assert_atan2_ulp(-0.76, 0.4342945, -1.0516414980168713)
assert_atan2_ulp(-0.76, 0.0000001, -1.5707961952159493)
assert_atan2_ulp(-0.76, 1000000000, -0.00000000076)
assert_atan2_ulp(-0.76, 31415926535897.125, -0.000000000000024191551349968713)
assert_atan2_ulp(-0.76, -27182818284590.566, -3.141592653589765)
assert_atan2_ulp(-0.76, @double.min_value, -3.141592653589793)
assert_atan2_ulp(-0.76, @double.infinity, -0)
assert_atan2_ulp(-0.76, @double.neg_infinity, -3.141592653589793)
assert_atan2_ulp(-0.76, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(-0.32, 0, -1.5707963267948966)
assert_atan2_ulp(-0.32, 1, -0.3097029445424562)
assert_atan2_ulp(-0.32, 2, -0.1586552621864014)
assert_atan2_ulp(-0.32, 3, -0.10626486289107881)
assert_atan2_ulp(-0.32, 5, -0.06391283278873403)
assert_atan2_ulp(-0.32, 6, -0.05328285155969236)
assert_atan2_ulp(-0.32, 7, -0.045682481074662766)
assert_atan2_ulp(-0.32, 13, -0.024610414794062008)
assert_atan2_ulp(-0.32, 14, -0.02285316354080822)
assert_atan2_ulp(-0.32, 15, -0.021330097871105264)
assert_atan2_ulp(-0.32, -1, -2.831889709047337)
assert_atan2_ulp(-0.32, -2, -2.9829373914033916)
assert_atan2_ulp(-0.32, -8, -3.1016139664665032)
assert_atan2_ulp(-0.32, -15, -3.120262555718688)
assert_atan2_ulp(-0.32, 0.12, -1.2120256565243244)
assert_atan2_ulp(-0.32, 0.23, -0.9475969968608307)
assert_atan2_ulp(-0.32, 0.34, -0.7551044034786732)
assert_atan2_ulp(-0.32, 0.78, -0.38931672183314087)
assert_atan2_ulp(-0.32, 0.89, -0.34515764984266833)
assert_atan2_ulp(-0.32, 0.9, -0.34161549064780716)
assert_atan2_ulp(-0.32, -0.87, -2.789135030763089)
assert_atan2_ulp(-0.32, -0.76, -2.743070207923373)
assert_atan2_ulp(-0.32, -0.32, -2.356194490192345)
assert_atan2_ulp(-0.32, -0.21, -2.151552680362567)
assert_atan2_ulp(-0.32, -0.1, -1.873681195169868)
assert_atan2_ulp(-0.32, 0.12345, -1.202607264899076)
assert_atan2_ulp(-0.32, 0.23456, -0.9382642892571225)
assert_atan2_ulp(-0.32, 0.34567, -0.7468546104207773)
assert_atan2_ulp(-0.32, 0.45678, -0.6110990658143591)
assert_atan2_ulp(-0.32, 0.56789, -0.51314074043788)
assert_atan2_ulp(-0.32, -0.98765, -2.828264203167268)
assert_atan2_ulp(-0.32, -0.87654, -2.7915544765374145)
assert_atan2_ulp(-0.32, -0.76543, -2.7456100824957486)
assert_atan2_ulp(-0.32, -0.10987, -1.9015290393568771)
assert_atan2_ulp(-0.32, 1.234, -0.25373034227166175)
assert_atan2_ulp(-0.32, 2.345, -0.13562286146380542)
assert_atan2_ulp(-0.32, 3.456, -0.092329334731599)
assert_atan2_ulp(-0.32, 4.567, -0.06995354859056888)
assert_atan2_ulp(-0.32, 5.678, -0.05629831780194623)
assert_atan2_ulp(-0.32, 11.234, -0.02847725596862863)
assert_atan2_ulp(-0.32, -1.234, -2.8878623113181314)
assert_atan2_ulp(-0.32, -2.345, -3.005969792125988)
assert_atan2_ulp(-0.32, -3.456, -3.0492633188581943)
assert_atan2_ulp(-0.32, -10.123, -3.1099919941611707)
assert_atan2_ulp(-0.32, -13.456, -3.1178159223512383)
assert_atan2_ulp(-0.32, 3.1415926, -0.10150906937565488)
assert_atan2_ulp(-0.32, 2.7182818, -0.11718209231510564)
assert_atan2_ulp(-0.32, 1.6180339, -0.19525126628242476)
assert_atan2_ulp(-0.32, 1.4142136, -0.22252687851245057)
assert_atan2_ulp(-0.32, 1.7320508, -0.18269204659772972)
assert_atan2_ulp(-0.32, 0.5772157, -0.5062039420833768)
assert_atan2_ulp(-0.32, 0.6931472, -0.4325099445233795)
assert_atan2_ulp(-0.32, 0.4342945, -0.6350170743859254)
assert_atan2_ulp(-0.32, 0.0000001, -1.5707960142948967)
assert_atan2_ulp(-0.32, 1000000000, -0.00000000032000000000000003)
assert_atan2_ulp(-0.32, 31415926535897.125, -0.000000000000010185916357881563)
assert_atan2_ulp(-0.32, -27182818284590.566, -3.1415926535897816)
assert_atan2_ulp(-0.32, @double.min_value, -3.141592653589793)
assert_atan2_ulp(-0.32, @double.infinity, -0)
assert_atan2_ulp(-0.32, @double.neg_infinity, -3.141592653589793)
assert_atan2_ulp(-0.32, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(-0.21, 0, -1.5707963267948966)
assert_atan2_ulp(-0.21, 1, -0.206992194219821)
assert_atan2_ulp(-0.21, 2, -0.1046166576325197)
assert_atan2_ulp(-0.21, 3, -0.0698860016346425)
assert_atan2_ulp(-0.21, 5, -0.041975330105357325)
assert_atan2_ulp(-0.21, 6, -0.034985718828525754)
assert_atan2_ulp(-0.21, 7, -0.0299910048568779)
assert_atan2_ulp(-0.21, 13, -0.016152441275937866)
assert_atan2_ulp(-0.21, 14, -0.014998875151850595)
assert_atan2_ulp(-0.21, 15, -0.013999085440883076)
assert_atan2_ulp(-0.21, -1, -2.9346004593699724)
assert_atan2_ulp(-0.21, -2, -3.0369759959572735)
assert_atan2_ulp(-0.21, -8, -3.115348680395157)
assert_atan2_ulp(-0.21, -15, -3.12759356814891)
assert_atan2_ulp(-0.21, 0.12, -1.0516502125483738)
assert_atan2_ulp(-0.21, 0.23, -0.7399748839758713)
assert_atan2_ulp(-0.21, 0.34, -0.5532943253222926)
assert_atan2_ulp(-0.21, 0.78, -0.26299473168091947)
assert_atan2_ulp(-0.21, 0.89, -0.23171684119045063)
assert_atan2_ulp(-0.21, 0.9, -0.22923193327699531)
assert_atan2_ulp(-0.21, -0.87, -2.904743892642873)
assert_atan2_ulp(-0.21, -0.76, -2.872003575668867)
assert_atan2_ulp(-0.21, -0.32, -2.560836300022123)
assert_atan2_ulp(-0.21, -0.21, -2.356194490192345)
assert_atan2_ulp(-0.21, -0.1, -2.0152155366959956)
assert_atan2_ulp(-0.21, 0.12345, -1.039353246103782)
assert_atan2_ulp(-0.21, 0.23456, -0.7302086292680496)
assert_atan2_ulp(-0.21, 0.34567, -0.5459275328502959)
assert_atan2_ulp(-0.21, 0.45678, -0.4309240600324998)
assert_atan2_ulp(-0.21, 0.56789, -0.35419512691996186)
assert_atan2_ulp(-0.21, -0.98765, -2.932086774332359)
assert_atan2_ulp(-0.21, -0.87654, -2.906446404157269)
assert_atan2_ulp(-0.21, -0.76543, -2.8738256432730256)
assert_atan2_ulp(-0.21, -0.10987, -2.0528237330974393)
assert_atan2_ulp(-0.21, 1.234, -0.1685634264220029)
assert_atan2_ulp(-0.21, 2.345, -0.0893139929932222)
assert_atan2_ulp(-0.21, 3.456, -0.06068926896835688)
assert_atan2_ulp(-0.21, 4.567, -0.045949678800868976)
assert_atan2_ulp(-0.21, 5.678, -0.03696800404198575)
assert_atan2_ulp(-0.21, 11.234, -0.01869107570666193)
assert_atan2_ulp(-0.21, -1.234, -2.9730292271677903)
assert_atan2_ulp(-0.21, -2.345, -3.052278660596571)
assert_atan2_ulp(-0.21, -3.456, -3.080903384621436)
assert_atan2_ulp(-0.21, -10.123, -3.1208507901705174)
assert_atan2_ulp(-0.21, -13.456, -3.1259874995124384)
assert_atan2_ulp(-0.21, 3.1415926, -0.066745782815569)
assert_atan2_ulp(-0.21, 2.7182818, -0.07710153880367297)
assert_atan2_ulp(-0.21, 1.6180339, -0.12906568058196408)
assert_atan2_ulp(-0.21, 1.4142136, -0.14741521675382097)
assert_atan2_ulp(-0.21, 1.7320508, -0.12065464913158262)
assert_atan2_ulp(-0.21, 0.5772157, -0.348929181499835)
assert_atan2_ulp(-0.21, 0.6931472, -0.29417562347622406)
assert_atan2_ulp(-0.21, 0.4342945, -0.45039542194162796)
assert_atan2_ulp(-0.21, 0.0000001, -1.5707958506044204)
assert_atan2_ulp(-0.21, 1000000000, -0.00000000021)
assert_atan2_ulp(-0.21, 31415926535897.125, -0.000000000000006684507609859776)
assert_atan2_ulp(-0.21, -27182818284590.566, -3.1415926535897856)
assert_atan2_ulp(-0.21, @double.min_value, -3.141592653589793)
assert_atan2_ulp(-0.21, @double.infinity, -0)
assert_atan2_ulp(-0.21, @double.neg_infinity, -3.141592653589793)
assert_atan2_ulp(-0.21, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(-0.1, 0, -1.5707963267948966)
assert_atan2_ulp(-0.1, 1, -0.09966865249116204)
assert_atan2_ulp(-0.1, 2, -0.049958395721942765)
assert_atan2_ulp(-0.1, 3, -0.033320995878247196)
assert_atan2_ulp(-0.1, 5, -0.019997333973150535)
assert_atan2_ulp(-0.1, 6, -0.01666512371394075)
assert_atan2_ulp(-0.1, 7, -0.014284742587396631)
assert_atan2_ulp(-0.1, 13, -0.007692155975648833)
assert_atan2_ulp(-0.1, 14, -0.007142735669413403)
assert_atan2_ulp(-0.1, 15, -0.006666567903868229)
assert_atan2_ulp(-0.1, -1, -3.0419240010986313)
assert_atan2_ulp(-0.1, -2, -3.0916342578678506)
assert_atan2_ulp(-0.1, -8, -3.1290933045704317)
assert_atan2_ulp(-0.1, -15, -3.134926085685925)
assert_atan2_ulp(-0.1, 0.12, -0.6947382761967033)
assert_atan2_ulp(-0.1, 0.23, -0.410127340541491)
assert_atan2_ulp(-0.1, 0.34, -0.2860514417173182)
assert_atan2_ulp(-0.1, 0.78, -0.12750955821523827)
assert_atan2_ulp(-0.1, 0.89, -0.11189026617167612)
assert_atan2_ulp(-0.1, 0.9, -0.11065722117389565)
assert_atan2_ulp(-0.1, -0.87, -3.0271523483197296)
assert_atan2_ulp(-0.1, -0.76, -3.0107652575157364)
assert_atan2_ulp(-0.1, -0.32, -2.838707785214822)
assert_atan2_ulp(-0.1, -0.21, -2.6971734436886945)
assert_atan2_ulp(-0.1, -0.1, -2.356194490192345)
assert_atan2_ulp(-0.1, 0.12345, -0.6808357303587167)
assert_atan2_ulp(-0.1, 0.23456, -0.4029967568323401)
assert_atan2_ulp(-0.1, 0.34567, -0.28160538161162413)
assert_atan2_ulp(-0.1, 0.45678, -0.21552352894693091)
assert_atan2_ulp(-0.1, 0.56789, -0.17430350783847315)
assert_atan2_ulp(-0.1, -0.98765, -3.0406860926446093)
assert_atan2_ulp(-0.1, -0.87654, -3.027998851656673)
assert_atan2_ulp(-0.1, -0.76543, -3.0116829104724423)
assert_atan2_ulp(-0.1, -0.10987, -2.4031889773739077)
assert_atan2_ulp(-0.1, 1.234, -0.08086058116056727)
assert_atan2_ulp(-0.1, 2.345, -0.042618102024327593)
assert_atan2_ulp(-0.1, 3.456, -0.02892711396020827)
assert_atan2_ulp(-0.1, 4.567, -0.02189271362509874)
assert_atan2_ulp(-0.1, 5.678, -0.01761001456484393)
assert_atan2_ulp(-0.1, 11.234, -0.008901313768306529)
assert_atan2_ulp(-0.1, -1.234, -3.060732072429226)
assert_atan2_ulp(-0.1, -2.345, -3.098974551565466)
assert_atan2_ulp(-0.1, -3.456, -3.112665539629585)
assert_atan2_ulp(-0.1, -10.123, -3.131714480383368)
assert_atan2_ulp(-0.1, -13.456, -3.134161161386265)
assert_atan2_ulp(-0.1, 3.1415926, -0.03182024518013098)
assert_atan2_ulp(-0.1, 2.7182818, -0.036771362275199844)
assert_atan2_ulp(-0.1, 1.6180339, -0.06172489277551978)
assert_atan2_ulp(-0.1, 1.4142136, -0.0705931774120621)
assert_atan2_ulp(-0.1, 1.7320508, -0.05767100513588365)
assert_atan2_ulp(-0.1, 0.5772157, -0.1715427577834917)
assert_atan2_ulp(-0.1, 0.6931472, -0.14328089013668147)
assert_atan2_ulp(-0.1, 0.4342945, -0.2263138862400789)
assert_atan2_ulp(-0.1, 0.0000001, -1.5707953267948966)
assert_atan2_ulp(-0.1, 1000000000, -0.0000000001)
assert_atan2_ulp(-0.1, 31415926535897.125, -0.0000000000000031830988618379885)
assert_atan2_ulp(-0.1, -27182818284590.566, -3.1415926535897896)
assert_atan2_ulp(-0.1, @double.min_value, -3.141592653589793)
assert_atan2_ulp(-0.1, @double.infinity, -0)
assert_atan2_ulp(-0.1, @double.neg_infinity, -3.141592653589793)
assert_atan2_ulp(-0.1, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(0.12345, 0, 1.5707963267948966)
assert_atan2_ulp(0.12345, 1, 0.12282855068741544)
assert_atan2_ulp(0.12345, 2, 0.06164678846424379)
assert_atan2_ulp(0.12345, 3, 0.041126796829420616)
assert_atan2_ulp(0.12345, 5, 0.02468498485829574)
assert_atan2_ulp(0.12345, 6, 0.020572097394684914)
assert_atan2_ulp(0.12345, 7, 0.017633886282839725)
assert_atan2_ulp(0.12345, 13, 0.009495868416905372)
assert_atan2_ulp(0.12345, 14, 0.008817628610520217)
assert_atan2_ulp(0.12345, 15, 0.008229814193628731)
assert_atan2_ulp(0.12345, -1, 3.0187641029023777)
assert_atan2_ulp(0.12345, -2, 3.0799458651255494)
assert_atan2_ulp(0.12345, -8, 3.1261626282624566)
assert_atan2_ulp(0.12345, -15, 3.1333628393961646)
assert_atan2_ulp(0.12345, 0.12, 0.7995685025990038)
assert_atan2_ulp(0.12345, 0.23, 0.49260514772037683)
assert_atan2_ulp(0.12345, 0.34, 0.34828680502946563)
assert_atan2_ulp(0.12345, 0.78, 0.15696724050247687)
assert_atan2_ulp(0.12345, 0.89, 0.1378284214424212)
assert_atan2_ulp(0.12345, 0.9, 0.13631599959812574)
assert_atan2_ulp(0.12345, -0.87, 3.0006371046340945)
assert_atan2_ulp(0.12345, -0.76, 2.9805648466342842)
assert_atan2_ulp(0.12345, -0.32, 2.7734035916939725)
assert_atan2_ulp(0.12345, -0.21, 2.6101495728986785)
assert_atan2_ulp(0.12345, -0.1, 2.2516320571536133)
assert_atan2_ulp(0.12345, 0.12345, 0.7853981633974483)
assert_atan2_ulp(0.12345, 0.23456, 0.4844691434510073)
assert_atan2_ulp(0.12345, 0.34567, 0.3430147772558932)
assert_atan2_ulp(0.12345, 0.45678, 0.26395545249130214)
assert_atan2_ulp(0.12345, 0.56789, 0.21405337293826604)
assert_atan2_ulp(0.12345, -0.98765, 3.017243889844375)
assert_atan2_ulp(0.12345, -0.87654, 3.001675073109019)
assert_atan2_ulp(0.12345, -0.76543, 2.981687745475126)
assert_atan2_ulp(0.12345, -0.10987, 2.2980567547442075)
assert_atan2_ulp(0.12345, 1.234, 0.09970876979413447)
assert_atan2_ulp(0.12345, 2.345, 0.05259537179627653)
assert_atan2_ulp(0.12345, 3.456, 0.03570530517618507)
assert_atan2_ulp(0.12345, 4.567, 0.027024293010934976)
assert_atan2_ulp(0.12345, 5.678, 0.021738385637536207)
assert_atan2_ulp(0.12345, 11.234, 0.010988519779029952)
assert_atan2_ulp(0.12345, -1.234, 3.0418838837956588)
assert_atan2_ulp(0.12345, -2.345, 3.0889972817935165)
assert_atan2_ulp(0.12345, -3.456, 3.1058873484136083)
assert_atan2_ulp(0.12345, -10.123, 3.129398256593073)
assert_atan2_ulp(0.12345, -13.456, 3.132418564957511)
assert_atan2_ulp(0.12345, 3.1415926, 0.03927514919018868)
assert_atan2_ulp(0.12345, 2.7182818, 0.045383533502848655)
assert_atan2_ulp(0.12345, 1.6180339, 0.07614877157979591)
assert_atan2_ulp(0.12345, 1.4142136, 0.08707161694489575)
assert_atan2_ulp(0.12345, 1.7320508, 0.07115356788876118)
assert_atan2_ulp(0.12345, 0.5772157, 0.21069729093561304)
assert_atan2_ulp(0.12345, 0.6931472, 0.17625263485483825)
assert_atan2_ulp(0.12345, 0.4342945, 0.2769491724535156)
assert_atan2_ulp(0.12345, 0.0000001, 1.5707955167503442)
assert_atan2_ulp(0.12345, 1000000000, 0.00000000012345)
assert_atan2_ulp(
0.12345, 31415926535897.125, 0.000000000000003929535544938997,
)
assert_atan2_ulp(0.12345, -27182818284590.566, 3.1415926535897887)
assert_atan2_ulp(0.12345, @double.min_value, 3.141592653589793)
assert_atan2_ulp(0.12345, @double.infinity, 0)
assert_atan2_ulp(0.12345, @double.neg_infinity, 3.141592653589793)
assert_atan2_ulp(0.12345, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(0.23456, 0, 1.5707963267948966)
assert_atan2_ulp(0.23456, 1, 0.2303949468807241)
assert_atan2_ulp(0.23456, 2, 0.11674668137944706)
assert_atan2_ulp(0.23456, 3, 0.07802792610449778)
assert_atan2_ulp(0.23456, 5, 0.04687763173147754)
assert_atan2_ulp(0.23456, 6, 0.03907343627521435)
assert_atan2_ulp(0.23456, 7, 0.0334960384574699)
assert_atan2_ulp(0.23456, 13, 0.01804111931509444)
assert_atan2_ulp(0.23456, 14, 0.01675271830158989)
assert_atan2_ulp(0.23456, 15, 0.015636058941101198)
assert_atan2_ulp(0.23456, -1, 2.911197706709069)
assert_atan2_ulp(0.23456, -2, 3.024845972210346)
assert_atan2_ulp(0.23456, -8, 3.1122810510260317)
assert_atan2_ulp(0.23456, -15, 3.125956594648692)
assert_atan2_ulp(0.23456, 0.12, 1.0979148683455706)
assert_atan2_ulp(0.23456, 0.23, 0.7952135877955328)
assert_atan2_ulp(0.23456, 0.34, 0.6039032725902387)
assert_atan2_ulp(0.23456, 0.78, 0.29211533280368335)
assert_atan2_ulp(0.23456, 0.89, 0.25769091472453187)
assert_atan2_ulp(0.23456, 0.9, 0.2549507935459773)
assert_atan2_ulp(0.23456, -0.87, 2.878245105658354)
assert_atan2_ulp(0.23456, -0.76, 2.8422359117014016)
assert_atan2_ulp(0.23456, -0.32, 2.509060616052019)
assert_atan2_ulp(0.23456, -0.21, 2.3010049560629464)
assert_atan2_ulp(0.23456, -0.1, 1.9737930836272368)
assert_atan2_ulp(0.23456, 0.12345, 1.0863271833438892)
assert_atan2_ulp(0.23456, 0.23456, 0.7853981633974483)
assert_atan2_ulp(0.23456, 0.34567, 0.596195604078866)
assert_atan2_ulp(0.23456, 0.45678, 0.47439520059595747)
assert_atan2_ulp(0.23456, 0.56789, 0.3916950342032776)
assert_atan2_ulp(0.23456, -0.98765, 2.9084194422440603)
assert_atan2_ulp(0.23456, -0.87654, 2.880121335143291)
assert_atan2_ulp(0.23456, -0.76543, 2.8442361766647446)
assert_atan2_ulp(0.23456, -0.10987, 2.0088532265782355)
assert_atan2_ulp(0.23456, 1.234, 0.1878401591115438)
assert_atan2_ulp(0.23456, 2.345, 0.09969398545068804)
assert_atan2_ulp(0.23456, 3.456, 0.06776644505047566)
assert_atan2_ulp(0.23456, 4.567, 0.05131466676322197)
assert_atan2_ulp(0.23456, 5.678, 0.041286845293915346)
assert_atan2_ulp(0.23456, 11.234, 0.02087643966962376)
assert_atan2_ulp(0.23456, -1.234, 2.9537524944782496)
assert_atan2_ulp(0.23456, -2.345, 3.041898668139105)
assert_atan2_ulp(0.23456, -3.456, 3.0738262085393178)
assert_atan2_ulp(0.23456, -10.123, 3.1184258023124976)
assert_atan2_ulp(0.23456, -13.456, 3.124162789856302)
assert_atan2_ulp(0.23456, 3.1415926, 0.07452449378422386)
assert_atan2_ulp(0.23456, 2.7182818, 0.08607658510096824)
assert_atan2_ulp(0.23456, 1.6180339, 0.14396318078830228)
assert_atan2_ulp(0.23456, 1.4142136, 0.16436269999633227)
assert_atan2_ulp(0.23456, 1.7320508, 0.1346044081364759)
assert_atan2_ulp(0.23456, 0.5772157, 0.38598099105510497)
assert_atan2_ulp(0.23456, 0.6931472, 0.3263022916380026)
assert_atan2_ulp(0.23456, 0.4342945, 0.4952062993824416)
assert_atan2_ulp(0.23456, 0.0000001, 1.5707959004647465)
assert_atan2_ulp(0.23456, 1000000000, 0.00000000023456)
assert_atan2_ulp(
0.23456, 31415926535897.125, 0.000000000000007466276690327185,
)
assert_atan2_ulp(0.23456, -27182818284590.566, 3.1415926535897847)
assert_atan2_ulp(0.23456, @double.min_value, 3.141592653589793)
assert_atan2_ulp(0.23456, @double.infinity, 0)
assert_atan2_ulp(0.23456, @double.neg_infinity, 3.141592653589793)
assert_atan2_ulp(0.23456, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(0.34567, 0, 1.5707963267948966)
assert_atan2_ulp(0.34567, 1, 0.33281216252994195)
assert_atan2_ulp(0.34567, 2, 0.17114422995038972)
assert_atan2_ulp(0.34567, 3, 0.11471743947813491)
assert_atan2_ulp(0.34567, 5, 0.06902417256740091)
assert_atan2_ulp(0.34567, 6, 0.05754805359469945)
assert_atan2_ulp(0.34567, 7, 0.049341347907007865)
assert_atan2_ulp(0.34567, 13, 0.026583736031340142)
assert_atan2_ulp(0.34567, 14, 0.02468569870883693)
assert_atan2_ulp(0.34567, 15, 0.023040588624740028)
assert_atan2_ulp(0.34567, -1, 2.8087804910598515)
assert_atan2_ulp(0.34567, -2, 2.9704484236394033)
assert_atan2_ulp(0.34567, -8, 3.0984107636964864)
assert_atan2_ulp(0.34567, -15, 3.118552064965053)
assert_atan2_ulp(0.34567, 0.12, 1.2366610329933059)
assert_atan2_ulp(0.34567, 0.23, 0.9836888406093472)
assert_atan2_ulp(0.34567, 0.34, 0.7936672589756434)
assert_atan2_ulp(0.34567, 0.78, 0.41715681343049754)
assert_atan2_ulp(0.34567, 0.89, 0.3704606959171592)
assert_atan2_ulp(0.34567, 0.9, 0.36670542187334354)
assert_atan2_ulp(0.34567, -0.87, 2.76339716589615)
assert_atan2_ulp(0.34567, -0.76, 2.714730236024689)
assert_atan2_ulp(0.34567, -0.32, 2.317650937215674)
assert_atan2_ulp(0.34567, -0.21, 2.1167238596451927)
assert_atan2_ulp(0.34567, -0.1, 1.8524017084065207)
assert_atan2_ulp(0.34567, 0.12345, 1.2277815495390034)
assert_atan2_ulp(0.34567, 0.23456, 0.9746007227160307)
assert_atan2_ulp(0.34567, 0.34567, 0.7853981633974483)
assert_atan2_ulp(0.34567, 0.45678, 0.6478095457865855)
assert_atan2_ulp(0.34567, 0.56789, 0.5467860477257942)
assert_atan2_ulp(0.34567, -0.98765, 2.804924599282089)
assert_atan2_ulp(0.34567, -0.87654, 2.7659600662364725)
assert_atan2_ulp(0.34567, -0.76543, 2.717406996824987)
assert_atan2_ulp(0.34567, -0.10987, 1.8785445876742257)
assert_atan2_ulp(0.34567, 1.234, 0.27312141829337827)
assert_atan2_ulp(0.34567, 2.345, 0.14635329087635948)
assert_atan2_ulp(0.34567, 3.456, 0.09968870653968498)
assert_atan2_ulp(0.34567, 4.567, 0.07554459639211251)
assert_atan2_ulp(0.34567, 5.678, 0.06080378702396953)
assert_atan2_ulp(0.34567, 11.234, 0.03076027856601124)
assert_atan2_ulp(0.34567, -1.234, 2.868471235296415)
assert_atan2_ulp(0.34567, -2.345, 2.9952393627134337)
assert_atan2_ulp(0.34567, -3.456, 3.041903947050108)
assert_atan2_ulp(0.34567, -10.123, 3.107458924305647)
assert_atan2_ulp(0.34567, -13.456, 3.115909390221177)
assert_atan2_ulp(0.34567, 3.1415926, 0.10958934609521649)
assert_atan2_ulp(0.34567, 2.7182818, 0.1264860053126696)
assert_atan2_ulp(0.34567, 1.6180339, 0.21047188879905232)
assert_atan2_ulp(0.34567, 1.4142136, 0.2397253217300983)
assert_atan2_ulp(0.34567, 1.7320508, 0.19698463035595093)
assert_atan2_ulp(0.34567, 0.5772157, 0.5395790656936635)
assert_atan2_ulp(0.34567, 0.6931472, 0.4626041699184971)
assert_atan2_ulp(0.34567, 0.4342945, 0.6722570921790827)
assert_atan2_ulp(0.34567, 0.0000001, 1.57079603750164)
assert_atan2_ulp(0.34567, 1000000000, 0.00000000034566999999999996)
assert_atan2_ulp(
0.34567, 31415926535897.125, 0.000000000000011003017835715374,
)
assert_atan2_ulp(0.34567, -27182818284590.566, 3.1415926535897807)
assert_atan2_ulp(0.34567, @double.min_value, 3.141592653589793)
assert_atan2_ulp(0.34567, @double.infinity, 0)
assert_atan2_ulp(0.34567, @double.neg_infinity, 3.141592653589793)
assert_atan2_ulp(0.34567, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(0.45678, 0, 1.5707963267948966)
assert_atan2_ulp(0.45678, 1, 0.42847785122558607)
assert_atan2_ulp(0.45678, 2, 0.2245387411399313)
assert_atan2_ulp(0.45678, 3, 0.1510994804120194)
assert_atan2_ulp(0.45678, 5, 0.09110311521344998)
assert_atan2_ulp(0.45678, 6, 0.07598343185070425)
assert_atan2_ulp(0.45678, 7, 0.06516190139760669)
assert_atan2_ulp(0.45678, 13, 0.03512247372447618)
assert_atan2_ulp(0.45678, 14, 0.03261557271727026)
assert_atan2_ulp(0.45678, 15, 0.030442592273951526)
assert_atan2_ulp(0.45678, -1, 2.713114802364207)
assert_atan2_ulp(0.45678, -2, 2.917053912449862)
assert_atan2_ulp(0.45678, -8, 3.084557080820227)
assert_atan2_ulp(0.45678, -15, 3.1111500613158416)
assert_atan2_ulp(0.45678, 0.12, 1.3138929238645998)
assert_atan2_ulp(0.45678, 0.23, 1.1043329569332154)
assert_atan2_ulp(0.45678, 0.34, 0.9309269421791755)
assert_atan2_ulp(0.45678, 0.78, 0.5297754277167164)
assert_atan2_ulp(0.45678, 0.89, 0.47418021783017594)
assert_atan2_ulp(0.45678, 0.9, 0.4696560975636532)
assert_atan2_ulp(0.45678, -0.87, 2.6581186203563556)
assert_atan2_ulp(0.45678, -0.76, 2.6004188510372823)
assert_atan2_ulp(0.45678, -0.32, 2.1818953926092557)
assert_atan2_ulp(0.45678, -0.21, 2.0017203868273965)
assert_atan2_ulp(0.45678, -0.1, 1.7863198557418276)
assert_atan2_ulp(0.45678, 0.12345, 1.3068408743035944)
assert_atan2_ulp(0.45678, 0.23456, 1.0964011261989393)
assert_atan2_ulp(0.45678, 0.34567, 0.9229867810083112)
assert_atan2_ulp(0.45678, 0.45678, 0.7853981633974483)
assert_atan2_ulp(0.45678, 0.56789, 0.6773852765499394)
assert_atan2_ulp(0.45678, -0.98765, 2.708399262143017)
assert_atan2_ulp(0.45678, -0.87654, 2.6611944189677477)
assert_atan2_ulp(0.45678, -0.76543, 2.603556991774021)
assert_atan2_ulp(0.45678, -0.10987, 1.8068438441660857)
assert_atan2_ulp(0.45678, 1.234, 0.35452246992365766)
assert_atan2_ulp(0.45678, 2.345, 0.1923799145467262)
assert_atan2_ulp(0.45678, 3.456, 0.13140848197479887)
assert_atan2_ulp(0.45678, 4.567, 0.09968599599530256)
assert_atan2_ulp(0.45678, 5.678, 0.08027446571692333)
assert_atan2_ulp(0.45678, 11.234, 0.04063810945613438)
assert_atan2_ulp(0.45678, -1.234, 2.7870701836661356)
assert_atan2_ulp(0.45678, -2.345, 2.949212739043067)
assert_atan2_ulp(0.45678, -3.456, 3.0101841716149944)
assert_atan2_ulp(0.45678, -10.123, 3.096500253705141)
assert_atan2_ulp(0.45678, -13.456, 3.107659488808989)
assert_atan2_ulp(0.45678, 3.1415926, 0.14438580475326138)
assert_atan2_ulp(0.45678, 2.7182818, 0.16648456896528097)
assert_atan2_ulp(0.45678, 1.6180339, 0.27514538520370807)
assert_atan2_ulp(0.45678, 1.4142136, 0.31241486660498535)
assert_atan2_ulp(0.45678, 1.7320508, 0.25785126503477707)
assert_atan2_ulp(0.45678, 0.5772157, 0.6694446308991344)
assert_atan2_ulp(0.45678, 0.6931472, 0.5826720855525126)
assert_atan2_ulp(0.45678, 0.4342945, 0.8106269508737509)
assert_atan2_ulp(0.45678, 0.0000001, 1.570796107871126)
assert_atan2_ulp(0.45678, 1000000000, 0.00000000045678)
assert_atan2_ulp(
0.45678, 31415926535897.125, 0.000000000000014539758981103566,
)
assert_atan2_ulp(0.45678, -27182818284590.566, 3.1415926535897762)
assert_atan2_ulp(0.45678, @double.min_value, 3.141592653589793)
assert_atan2_ulp(0.45678, @double.infinity, 0)
assert_atan2_ulp(0.45678, @double.neg_infinity, 3.141592653589793)
assert_atan2_ulp(0.45678, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(0.56789, 0, 1.5707963267948966)
assert_atan2_ulp(0.56789, 1, 0.5164745097842471)
assert_atan2_ulp(0.56789, 2, 0.27666314090779087)
assert_atan2_ulp(0.56789, 3, 0.18708303139829396)
assert_atan2_ulp(0.56789, 5, 0.11309336163142525)
assert_atan2_ulp(0.56789, 6, 0.09436721320056009)
assert_atan2_ulp(0.56789, 7, 0.0809498599225864)
assert_atan2_ulp(0.56789, 13, 0.04365609094549113)
assert_atan2_ulp(0.56789, 14, 0.04054134555496947)
assert_atan2_ulp(0.56789, 15, 0.037841260578330385)
assert_atan2_ulp(0.56789, -1, 2.625118143805546)
assert_atan2_ulp(0.56789, -2, 2.8649295126820022)
assert_atan2_ulp(0.56789, -8, 3.0707252787520156)
assert_atan2_ulp(0.56789, -15, 3.103751393011463)
assert_atan2_ulp(0.56789, 0.12, 1.3625512036584646)
assert_atan2_ulp(0.56789, 0.23, 1.185980167155728)
assert_atan2_ulp(0.56789, 0.34, 1.0313277389325104)
assert_atan2_ulp(0.56789, 0.78, 0.6293136938150515)
assert_atan2_ulp(0.56789, 0.89, 0.567948956799456)
assert_atan2_ulp(0.56789, 0.9, 0.5628943449368948)
assert_atan2_ulp(0.56789, -0.87, 2.5632886604489755)
assert_atan2_ulp(0.56789, -0.76, 2.4998707560599676)
assert_atan2_ulp(0.56789, -0.32, 2.083937067232777)
assert_atan2_ulp(0.56789, -0.21, 1.9249914537148585)
assert_atan2_ulp(0.56789, -0.1, 1.7450998346333697)
assert_atan2_ulp(0.56789, 0.12345, 1.3567429538566307)
assert_atan2_ulp(0.56789, 0.23456, 1.1791012925916189)
assert_atan2_ulp(0.56789, 0.34567, 1.0240102790691024)
assert_atan2_ulp(0.56789, 0.45678, 0.8934110502449572)
assert_atan2_ulp(0.56789, 0.56789, 0.7853981633974483)
assert_atan2_ulp(0.56789, -0.98765, 2.619765031885427)
assert_atan2_ulp(0.56789, -0.87654, 2.5667114088159626)
assert_atan2_ulp(0.56789, -0.76543, 2.503281000014857)
assert_atan2_ulp(0.56789, -0.10987, 1.7619057746612026)
assert_atan2_ulp(0.56789, 1.234, 0.43130593914176024)
assert_atan2_ulp(0.56789, 2.345, 0.23759632718803947)
assert_atan2_ulp(0.56789, 3.456, 0.16286459148574514)
assert_atan2_ulp(0.56789, 4.567, 0.1237113963498387)
assert_atan2_ulp(0.56789, 5.678, 0.09968434618102448)
assert_atan2_ulp(0.56789, 11.234, 0.050508012357793286)
assert_atan2_ulp(0.56789, -1.234, 2.710286714448033)
assert_atan2_ulp(0.56789, -2.345, 2.903996326401754)
assert_atan2_ulp(0.56789, -3.456, 2.978728062104048)
assert_atan2_ulp(0.56789, -10.123, 3.085552409825489)
assert_atan2_ulp(0.56789, -13.456, 3.0994142055208056)
assert_atan2_ulp(0.56789, 3.1415926, 0.178833835350861)
assert_atan2_ulp(0.56789, 2.7182818, 0.2059528508839697)
assert_atan2_ulp(0.56789, 1.6180339, 0.337543455779732)
assert_atan2_ulp(0.56789, 1.4142136, 0.38184949853629196)
assert_atan2_ulp(0.56789, 1.7320508, 0.31682682749040625)
assert_atan2_ulp(0.56789, 0.5772157, 0.7772543790855323)
assert_atan2_ulp(0.56789, 0.6931472, 0.6863941972457203)
assert_atan2_ulp(0.56789, 0.4342945, 0.9179211662049814)
assert_atan2_ulp(0.56789, 0.0000001, 1.5707961507044566)
assert_atan2_ulp(0.56789, 1000000000, 0.00000000056789)
assert_atan2_ulp(
0.56789, 31415926535897.125, 0.000000000000018076500126491753,
)
assert_atan2_ulp(0.56789, -27182818284590.566, 3.1415926535897722)
assert_atan2_ulp(0.56789, @double.min_value, 3.141592653589793)
assert_atan2_ulp(0.56789, @double.infinity, 0)
assert_atan2_ulp(0.56789, @double.neg_infinity, 3.141592653589793)
assert_atan2_ulp(0.56789, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(-0.98765, 0, -1.5707963267948966)
assert_atan2_ulp(-0.98765, 1, -0.7791848758086322)
assert_atan2_ulp(-0.98765, 2, -0.4586954174709777)
assert_atan2_ulp(-0.98765, 3, -0.3180409900793973)
assert_atan2_ulp(-0.98765, 5, -0.19501943566061575)
assert_atan2_ulp(-0.98765, 6, -0.16314530869920793)
assert_atan2_ulp(-0.98765, 7, -0.14016762915984202)
assert_atan2_ulp(-0.98765, 13, -0.0758274111721895)
assert_atan2_ulp(-0.98765, 14, -0.07042974501148858)
assert_atan2_ulp(-0.98765, 15, -0.06574842889869162)
assert_atan2_ulp(-0.98765, -1, -2.362407777781161)
assert_atan2_ulp(-0.98765, -2, -2.6828972361188157)
assert_atan2_ulp(-0.98765, -8, -3.018757946726646)
assert_atan2_ulp(-0.98765, -15, -3.0758442246911017)
assert_atan2_ulp(-0.98765, 0.12, -1.449888433739532)
assert_atan2_ulp(-0.98765, 0.23, -1.3419981392292686)
assert_atan2_ulp(-0.98765, 0.34, -1.2392518107464328)
assert_atan2_ulp(-0.98765, 0.78, -0.9023345810437937)
assert_atan2_ulp(-0.98765, 0.89, -0.8373578499179186)
assert_atan2_ulp(-0.98765, 0.9, -0.8317982314558755)
assert_atan2_ulp(-0.98765, -0.87, -2.2929462581838744)
assert_atan2_ulp(-0.98765, -0.76, -2.2266631905191336)
assert_atan2_ulp(-0.98765, -0.32, -1.8841247772174223)
assert_atan2_ulp(-0.98765, -0.21, -1.7803022060523306)
assert_atan2_ulp(-0.98765, -0.1, -1.6717028877400804)
assert_atan2_ulp(-0.98765, 0.12345, -1.4464475630494784)
assert_atan2_ulp(-0.98765, 0.23456, -1.3376231154491638)
assert_atan2_ulp(-0.98765, 0.34567, -1.2341282724871923)
assert_atan2_ulp(-0.98765, 0.45678, -1.1376029353481205)
assert_atan2_ulp(-0.98765, 0.56789, -1.0489687050905303)
assert_atan2_ulp(-0.98765, -0.98765, -2.356194490192345)
assert_atan2_ulp(-0.98765, -0.87654, -2.2966626241085697)
assert_atan2_ulp(-0.98765, -0.76543, -2.2301071858374844)
assert_atan2_ulp(-0.98765, -0.10987, -1.6815846777287178)
assert_atan2_ulp(-0.98765, 1.234, -0.6749632610547416)
assert_atan2_ulp(-0.98765, 2.345, -0.39862443551664667)
assert_atan2_ulp(-0.98765, 3.456, -0.278358893240137)
assert_atan2_ulp(-0.98765, 4.567, -0.21297820706483794)
assert_atan2_ulp(-0.98765, 5.678, -0.17222017281750354)
assert_atan2_ulp(-0.98765, 11.234, -0.08769068349228064)
assert_atan2_ulp(-0.98765, -1.234, -2.4666293925350518)
assert_atan2_ulp(-0.98765, -2.345, -2.7429682180731465)
assert_atan2_ulp(-0.98765, -3.456, -2.8632337603496563)
assert_atan2_ulp(-0.98765, -10.123, -3.0443355173305826)
assert_atan2_ulp(-0.98765, -13.456, -3.068325552687004)
assert_atan2_ulp(-0.98765, 3.1415926, -0.30459556627781187)
assert_atan2_ulp(-0.98765, 2.7182818, -0.34850581158933674)
assert_atan2_ulp(-0.98765, 1.6180339, -0.5480324347312251)
assert_atan2_ulp(-0.98765, 1.4142136, -0.6096338512726951)
assert_atan2_ulp(-0.98765, 1.7320508, -0.5182345598817073)
assert_atan2_ulp(-0.98765, 0.5772157, -1.0419014565949436)
assert_atan2_ulp(-0.98765, 0.6931472, -0.9588535409939218)
assert_atan2_ulp(-0.98765, 0.4342945, -1.156519782980202)
assert_atan2_ulp(-0.98765, 0.0000001, -1.5707962255444536)
assert_atan2_ulp(-0.98765, 1000000000, -0.00000000098765)
assert_atan2_ulp(
-0.98765, 31415926535897.125, -0.000000000000031437875908942897,
)
assert_atan2_ulp(-0.98765, -27182818284590.566, -3.1415926535897567)
assert_atan2_ulp(-0.98765, @double.min_value, -3.141592653589793)
assert_atan2_ulp(-0.98765, @double.infinity, -0)
assert_atan2_ulp(-0.98765, @double.neg_infinity, -3.141592653589793)
assert_atan2_ulp(-0.98765, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(-0.87654, 0, -1.5707963267948966)
assert_atan2_ulp(-0.87654, 1, -0.7197015466378203)
assert_atan2_ulp(-0.87654, 2, -0.41305655389851903)
assert_atan2_ulp(-0.87654, 3, -0.28426713190347974)
assert_atan2_ulp(-0.87654, 5, -0.17354449860157437)
assert_atan2_ulp(-0.87654, 6, -0.14506381073972963)
assert_atan2_ulp(-0.87654, 7, -0.12457160406286977)
assert_atan2_ulp(-0.87654, 13, -0.06732425213524947)
assert_atan2_ulp(-0.87654, 14, -0.06252838122958355)
assert_atan2_ulp(-0.87654, 15, -0.05836962085803407)
assert_atan2_ulp(-0.87654, -1, -2.421891106951973)
assert_atan2_ulp(-0.87654, -2, -2.7285360996912744)
assert_atan2_ulp(-0.87654, -8, -3.032460476193201)
assert_atan2_ulp(-0.87654, -15, -3.0832230327317593)
assert_atan2_ulp(-0.87654, 0.12, -1.4347402040106294)
assert_atan2_ulp(-0.87654, 0.23, -1.3141859241347953)
assert_atan2_ulp(-0.87654, 0.34, -1.2007740896047607)
assert_atan2_ulp(-0.87654, 0.78, -0.8436104178958055)
assert_atan2_ulp(-0.87654, 0.89, -0.7777788966197263)
assert_atan2_ulp(-0.87654, 0.9, -0.7721934866315607)
assert_atan2_ulp(-0.87654, -0.87, -2.35244996133351)
assert_atan2_ulp(-0.87654, -0.76, -2.2851032829325284)
assert_atan2_ulp(-0.87654, -0.32, -1.9208345038472752)
assert_atan2_ulp(-0.87654, -0.21, -1.805942576227421)
assert_atan2_ulp(-0.87654, -0.1, -1.684390128728017)
assert_atan2_ulp(-0.87654, 0.12345, -1.4308787463141222)
assert_atan2_ulp(-0.87654, 0.23456, -1.3093250083483945)
assert_atan2_ulp(-0.87654, 0.34567, -1.1951637394415757)
assert_atan2_ulp(-0.87654, 0.45678, -1.0903980921728513)
assert_atan2_ulp(-0.87654, 0.56789, -0.9959150820210658)
assert_atan2_ulp(-0.87654, -0.98765, -2.41572635627612)
assert_atan2_ulp(-0.87654, -0.87654, -2.356194490192345)
assert_atan2_ulp(-0.87654, -0.76543, -2.2886287785817574)
assert_atan2_ulp(-0.87654, -0.10987, -1.6954911044570857)
assert_atan2_ulp(-0.87654, 1.234, -0.6176213691216591)
assert_atan2_ulp(-0.87654, 2.345, -0.3577103432754997)
assert_atan2_ulp(-0.87654, 3.456, -0.24839076943981314)
assert_atan2_ulp(-0.87654, 4.567, -0.18962312968481407)
assert_atan2_ulp(-0.87654, 5.678, -0.15316569076538758)
assert_atan2_ulp(-0.87654, 11.234, -0.07786787231838468)
assert_atan2_ulp(-0.87654, -1.234, -2.5239712844681343)
assert_atan2_ulp(-0.87654, -2.345, -2.7838823103142936)
assert_atan2_ulp(-0.87654, -3.456, -2.8932018841499803)
assert_atan2_ulp(-0.87654, -10.123, -3.0552191338982904)
assert_atan2_ulp(-0.87654, -13.456, -3.0765433582951935)
assert_atan2_ulp(-0.87654, 3.1415926, -0.27209169532036276)
assert_atan2_ulp(-0.87654, 2.7182818, -0.31193379340394684)
assert_atan2_ulp(-0.87654, 1.6180339, -0.4964729108537966)
assert_atan2_ulp(-0.87654, 1.4142136, -0.5548565658757765)
assert_atan2_ulp(-0.87654, 1.7320508, -0.4684922926702832)
assert_atan2_ulp(-0.87654, 0.5772157, -0.9884576713660473)
assert_atan2_ulp(-0.87654, 0.6931472, -0.9017048518486325)
assert_atan2_ulp(-0.87654, 0.4342945, -1.1107836531843327)
assert_atan2_ulp(-0.87654, 0.0000001, -1.5707962127099717)
assert_atan2_ulp(-0.87654, 1000000000, -0.00000000087654)
assert_atan2_ulp(
-0.87654, 31415926535897.125, -0.000000000000027901134763554706,
)
assert_atan2_ulp(-0.87654, -27182818284590.566, -3.141592653589761)
assert_atan2_ulp(-0.87654, @double.min_value, -3.141592653589793)
assert_atan2_ulp(-0.87654, @double.infinity, -0)
assert_atan2_ulp(-0.87654, @double.neg_infinity, -3.141592653589793)
assert_atan2_ulp(-0.87654, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(-0.76543, 0, -1.5707963267948966)
assert_atan2_ulp(-0.76543, 1, -0.6533033928690294)
assert_atan2_ulp(-0.76543, 2, -0.36551729087650014)
assert_atan2_ulp(-0.76543, 3, -0.24981355854931472)
assert_atan2_ulp(-0.76543, 5, -0.15190666565325334)
assert_atan2_ulp(-0.76543, 6, -0.12688629051512051)
assert_atan2_ulp(-0.76543, 7, -0.10891442907655763)
assert_atan2_ulp(-0.76543, 13, -0.05881133181823411)
assert_atan2_ulp(-0.76543, 14, -0.05461919218966792)
assert_atan2_ulp(-0.76543, 15, -0.050984444133505565)
assert_atan2_ulp(-0.76543, -1, -2.488289260720764)
assert_atan2_ulp(-0.76543, -2, -2.7760753627132932)
assert_atan2_ulp(-0.76543, -8, -3.0462042716158595)
assert_atan2_ulp(-0.76543, -15, -3.090608209456288)
assert_atan2_ulp(-0.76543, 0.12, -1.4152875054186616)
assert_atan2_ulp(-0.76543, 0.23, -1.278894917459518)
assert_atan2_ulp(-0.76543, 0.34, -1.1527805106211488)
assert_atan2_ulp(-0.76543, 0.78, -0.7759706459128615)
assert_atan2_ulp(-0.76543, 0.89, -0.710290383954532)
assert_atan2_ulp(-0.76543, 0.9, -0.7047713734713449)
assert_atan2_ulp(-0.76543, -0.87, -2.420047936424307)
assert_atan2_ulp(-0.76543, -0.76, -2.352634853194618)
assert_atan2_ulp(-0.76543, -0.32, -1.9667788978889411)
assert_atan2_ulp(-0.76543, -0.21, -1.8385633371116643)
assert_atan2_ulp(-0.76543, -0.1, -1.7007060699122474)
assert_atan2_ulp(-0.76543, 0.12345, -1.4108914186802293)
assert_atan2_ulp(-0.76543, 0.23456, -1.273439849869848)
assert_atan2_ulp(-0.76543, 0.34567, -1.1466106700300907)
assert_atan2_ulp(-0.76543, 0.45678, -1.032760664979124)
assert_atan2_ulp(-0.76543, 0.56789, -0.9324846732199601)
assert_atan2_ulp(-0.76543, -0.98765, -2.4822817945472053)
assert_atan2_ulp(-0.76543, -0.87654, -2.4237602018029327)
assert_atan2_ulp(-0.76543, -0.76543, -2.356194490192345)
assert_atan2_ulp(-0.76543, -0.10987, -1.71336274492814)
assert_atan2_ulp(-0.76543, 1.234, -0.5552005774129732)
assert_atan2_ulp(-0.76543, 2.345, -0.3155061080160946)
assert_atan2_ulp(-0.76543, 3.456, -0.21796019467577385)
assert_atan2_ulp(-0.76543, 4.567, -0.1660568182342859)
assert_atan2_ulp(-0.76543, 5.678, -0.13399846041771657)
assert_atan2_ulp(-0.76543, 11.234, -0.06802998149940265)
assert_atan2_ulp(-0.76543, -1.234, -2.58639207617682)
assert_atan2_ulp(-0.76543, -2.345, -2.8260865455736988)
assert_atan2_ulp(-0.76543, -3.456, -2.9236324589140192)
assert_atan2_ulp(-0.76543, -10.123, -3.06612330185043)
assert_atan2_ulp(-0.76543, -13.456, -3.0847699714085617)
assert_atan2_ulp(-0.76543, 3.1415926, -0.23898760100595565)
assert_atan2_ulp(-0.76543, 2.7182818, -0.2744787602579408)
assert_atan2_ulp(-0.76543, 1.6180339, -0.4418657369695125)
assert_atan2_ulp(-0.76543, 1.4142136, -0.4960933791934599)
assert_atan2_ulp(-0.76543, 1.7320508, -0.41611533397763445)
assert_atan2_ulp(-0.76543, 0.5772157, -0.9246722661382168)
assert_atan2_ulp(-0.76543, 0.6931472, -0.8349147154698743)
assert_atan2_ulp(-0.76543, 0.4342945, -1.0547027648878058)
assert_atan2_ulp(-0.76543, 0.0000001, -1.570796196149377)
assert_atan2_ulp(-0.76543, 1000000000, -0.00000000076543)
assert_atan2_ulp(
-0.76543, 31415926535897.125, -0.000000000000024364393618166518,
)
assert_atan2_ulp(-0.76543, -27182818284590.566, -3.141592653589765)
assert_atan2_ulp(-0.76543, @double.min_value, -3.141592653589793)
assert_atan2_ulp(-0.76543, @double.infinity, -0)
assert_atan2_ulp(-0.76543, @double.neg_infinity, -3.141592653589793)
assert_atan2_ulp(-0.76543, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(-0.10987, 0, -1.5707963267948966)
assert_atan2_ulp(-0.10987, 1, -0.10943107915405893)
assert_atan2_ulp(-0.10987, 2, -0.05487983790767896)
assert_atan2_ulp(-0.10987, 3, -0.03660697258947621)
assert_atan2_ulp(-0.10987, 5, -0.02197046426009738)
assert_atan2_ulp(-0.10987, 6, -0.018309620339810605)
assert_atan2_ulp(-0.10987, 7, -0.015694425567962546)
assert_atan2_ulp(-0.10987, 13, -0.008451337243250355)
assert_atan2_ulp(-0.10987, 14, -0.007847696035281066)
assert_atan2_ulp(-0.10987, 15, -0.007324535679616525)
assert_atan2_ulp(-0.10987, -1, -3.0321615744357344)
assert_atan2_ulp(-0.10987, -2, -3.086712815682114)
assert_atan2_ulp(-0.10987, -8, -3.12785976695991)
assert_atan2_ulp(-0.10987, -15, -3.134268117910177)
assert_atan2_ulp(-0.10987, 0.12, -0.7413582709925847)
assert_atan2_ulp(-0.10987, 0.23, -0.44564544775360143)
assert_atan2_ulp(-0.10987, 0.34, -0.31255506540303163)
assert_atan2_ulp(-0.10987, 0.78, -0.13993830403239407)
assert_atan2_ulp(-0.10987, 0.89, -0.12282799732284631)
assert_atan2_ulp(-0.10987, 0.9, -0.12147670233396632)
assert_atan2_ulp(-0.10987, -0.87, -3.015970309685421)
assert_atan2_ulp(-0.10987, -0.76, -2.9980215273212294)
assert_atan2_ulp(-0.10987, -0.32, -2.810859941027813)
assert_atan2_ulp(-0.10987, -0.21, -2.6595652472872504)
assert_atan2_ulp(-0.10987, -0.1, -2.3092000030107824)
assert_atan2_ulp(-0.10987, 0.12345, -0.7272604279493106)
assert_atan2_ulp(-0.10987, 0.23456, -0.4380568997833387)
assert_atan2_ulp(-0.10987, 0.34567, -0.3077482608793291)
assert_atan2_ulp(-0.10987, 0.45678, -0.23604751737118895)
assert_atan2_ulp(-0.10987, 0.56789, -0.19110944786630596)
assert_atan2_ulp(-0.10987, -0.98765, -3.030804302655972)
assert_atan2_ulp(-0.10987, -0.87654, -3.016897875927604)
assert_atan2_ulp(-0.10987, -0.76543, -2.99902623545655)
assert_atan2_ulp(-0.10987, -0.10987, -2.356194490192345)
assert_atan2_ulp(-0.10987, 1.234, -0.08880149694090958)
assert_atan2_ulp(-0.10987, 2.345, -0.04681863985827433)
assert_atan2_ulp(-0.10987, 3.456, -0.03178038431862886)
assert_atan2_ulp(-0.10987, 4.567, -0.024052728563245748)
assert_atan2_ulp(-0.10987, 5.678, -0.019347708753976973)
assert_atan2_ulp(-0.10987, 11.234, -0.009779819934432775)
assert_atan2_ulp(-0.10987, -1.234, -3.0527911566488837)
assert_atan2_ulp(-0.10987, -2.345, -3.0947740137315187)
assert_atan2_ulp(-0.10987, -3.456, -3.1098122692711643)
assert_atan2_ulp(-0.10987, -10.123, -3.130739577808798)
assert_atan2_ulp(-0.10987, -13.456, -3.1334277042405483)
assert_atan2_ulp(-0.10987, 3.1415926, -0.03495845998615918)
assert_atan2_ulp(-0.10987, 2.7182818, -0.04039692553383181)
assert_atan2_ulp(-0.10987, 1.6180339, -0.06779932123444886)
assert_atan2_ulp(-0.10987, 1.4142136, -0.07753407923815403)
assert_atan2_ulp(-0.10987, 1.7320508, -0.063348597850395)
assert_atan2_ulp(-0.10987, 0.5772157, -0.18809470021270377)
assert_atan2_ulp(-0.10987, 0.6931472, -0.15720104397890036)
assert_atan2_ulp(-0.10987, 0.4342945, -0.2477861085080284)
assert_atan2_ulp(-0.10987, 0.0000001, -1.5707954166283362)
assert_atan2_ulp(-0.10987, 1000000000, -0.00000000010986999999999999)
assert_atan2_ulp(
-0.10987, 31415926535897.125, -0.0000000000000034972707195013977,
)
assert_atan2_ulp(-0.10987, -27182818284590.566, -3.141592653589789)
assert_atan2_ulp(-0.10987, @double.min_value, -3.141592653589793)
assert_atan2_ulp(-0.10987, @double.infinity, -0)
assert_atan2_ulp(-0.10987, @double.neg_infinity, -3.141592653589793)
assert_atan2_ulp(-0.10987, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(1.234, 0, 1.5707963267948966)
assert_atan2_ulp(1.234, 1, 0.8897624489591893)
assert_atan2_ulp(1.234, 2, 0.5528258116099538)
assert_atan2_ulp(1.234, 3, 0.39023815139744084)
assert_atan2_ulp(1.234, 5, 0.24196463815745234)
assert_atan2_ulp(1.234, 6, 0.20283829281205765)
assert_atan2_ulp(1.234, 7, 0.17449290282916963)
assert_atan2_ulp(1.234, 13, 0.09463951038095325)
assert_atan2_ulp(1.234, 14, 0.08791564991625571)
assert_atan2_ulp(1.234, 15, 0.08208182842015983)
assert_atan2_ulp(1.234, -1, 2.251830204630604)
assert_atan2_ulp(1.234, -2, 2.5887668419798393)
assert_atan2_ulp(1.234, -8, 2.9885488404871854)
assert_atan2_ulp(1.234, -15, 3.0595108251696335)
assert_atan2_ulp(1.234, 0.12, 1.4738563994732872)
assert_atan2_ulp(1.234, 0.23, 1.386525013360795)
assert_atan2_ulp(1.234, 0.34, 1.3019404737435627)
assert_atan2_ulp(1.234, 0.78, 1.0071142785729157)
assert_atan2_ulp(1.234, 0.89, 0.945962520848779)
assert_atan2_ulp(1.234, 0.9, 0.9406522025511955)
assert_atan2_ulp(1.234, -0.87, 2.184886358797571)
assert_atan2_ulp(1.234, -0.76, 2.122812940263289)
assert_atan2_ulp(1.234, -0.32, 1.8245266690665585)
assert_atan2_ulp(1.234, -0.21, 1.7393597532168996)
assert_atan2_ulp(1.234, -0.1, 1.651656907955464)
assert_atan2_ulp(1.234, 0.12345, 1.4710875570007622)
assert_atan2_ulp(1.234, 0.23456, 1.3829561676833528)
assert_atan2_ulp(1.234, 0.34567, 1.2976749085015185)
assert_atan2_ulp(1.234, 0.45678, 1.216273856871239)
assert_atan2_ulp(1.234, 0.56789, 1.1394903876531364)
assert_atan2_ulp(1.234, -0.98765, 2.2457595878496384)
assert_atan2_ulp(1.234, -0.87654, 2.1884176959165558)
assert_atan2_ulp(1.234, -0.76543, 2.1259969042078697)
assert_atan2_ulp(1.234, -0.10987, 1.6595978237358062)
assert_atan2_ulp(1.234, 1.234, 0.7853981633974483)
assert_atan2_ulp(1.234, 2.345, 0.4844076240894283)
assert_atan2_ulp(1.234, 3.456, 0.3429506185745907)
assert_atan2_ulp(1.234, 4.567, 0.2638975419239387)
assert_atan2_ulp(1.234, 5.678, 0.21400218863832302)
assert_atan2_ulp(1.234, 11.234, 0.1094064889748024)
assert_atan2_ulp(1.234, -1.234, 2.356194490192345)
assert_atan2_ulp(1.234, -2.345, 2.657185029500365)
assert_atan2_ulp(1.234, -3.456, 2.7986420350152024)
assert_atan2_ulp(1.234, -10.123, 3.02029050903008)
assert_atan2_ulp(1.234, -13.456, 3.0501421467882874)
assert_atan2_ulp(1.234, 3.1415926, 0.374279266229412)
assert_atan2_ulp(1.234, 2.7182818, 0.4261448630228642)
assert_atan2_ulp(1.234, 1.6180339, 0.6515505917535934)
assert_atan2_ulp(1.234, 1.4142136, 0.7174519130191169)
assert_atan2_ulp(1.234, 1.7320508, 0.6190330458135167)
assert_atan2_ulp(1.234, 0.5772157, 1.1332718260937928)
assert_atan2_ulp(1.234, 0.6931472, 1.0590089988271914)
assert_atan2_ulp(1.234, 0.4342945, 1.2323938794822986)
assert_atan2_ulp(1.234, 0.0000001, 1.5707962457576194)
assert_atan2_ulp(1.234, 1000000000, 0.000000001234)
assert_atan2_ulp(1.234, 31415926535897.125, 0.00000000000003927943995508078)
assert_atan2_ulp(1.234, -27182818284590.566, 3.141592653589748)
assert_atan2_ulp(1.234, @double.min_value, 3.141592653589793)
assert_atan2_ulp(1.234, @double.infinity, 0)
assert_atan2_ulp(1.234, @double.neg_infinity, 3.141592653589793)
assert_atan2_ulp(1.234, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(2.345, 0, 1.5707963267948966)
assert_atan2_ulp(2.345, 1, 1.1677072684050145)
assert_atan2_ulp(2.345, 2, 0.8646335372783774)
assert_atan2_ulp(2.345, 3, 0.6634616830802742)
assert_atan2_ulp(2.345, 5, 0.4385415041358621)
assert_atan2_ulp(2.345, 6, 0.3725791865787681)
assert_atan2_ulp(2.345, 7, 0.32324980364814215)
assert_atan2_ulp(2.345, 13, 0.17846545816240914)
assert_atan2_ulp(2.345, 14, 0.16595937849360637)
assert_atan2_ulp(2.345, 15, 0.15507808820471128)
assert_atan2_ulp(2.345, -1, 1.9738853851847786)
assert_atan2_ulp(2.345, -2, 2.276959116311416)
assert_atan2_ulp(2.345, -8, 2.8564550718313084)
assert_atan2_ulp(2.345, -15, 2.986514565385082)
assert_atan2_ulp(2.345, 0.12, 1.5196682165915472)
assert_atan2_ulp(2.345, 0.23, 1.4730280098540243)
assert_atan2_ulp(2.345, 0.34, 1.4268103465511506)
assert_atan2_ulp(2.345, 0.78, 1.249685567576472)
assert_atan2_ulp(2.345, 0.89, 1.2080592750845491)
assert_atan2_ulp(2.345, 0.9, 1.2043370848230304)
assert_atan2_ulp(2.345, -0.87, 1.9260574185876391)
assert_atan2_ulp(2.345, -0.76, 1.8842083958159965)
assert_atan2_ulp(2.345, -0.32, 1.706419188258702)
assert_atan2_ulp(2.345, -0.21, 1.6601103197881188)
assert_atan2_ulp(2.345, -0.1, 1.6134144288192243)
assert_atan2_ulp(2.345, 0.12345, 1.5182009549986202)
assert_atan2_ulp(2.345, 0.23456, 1.4711023413442086)
assert_atan2_ulp(2.345, 0.34567, 1.4244430359185372)
assert_atan2_ulp(2.345, 0.45678, 1.3784164122481704)
assert_atan2_ulp(2.345, 0.56789, 1.333199999606857)
assert_atan2_ulp(2.345, -0.98765, 1.9694207623115434)
assert_atan2_ulp(2.345, -0.87654, 1.9285066700703963)
assert_atan2_ulp(2.345, -0.76543, 1.8863024348109911)
assert_atan2_ulp(2.345, -0.10987, 1.617614966653171)
assert_atan2_ulp(2.345, 1.234, 1.0863887027054684)
assert_atan2_ulp(2.345, 2.345, 0.7853981633974483)
assert_atan2_ulp(2.345, 3.456, 0.5961708373413023)
assert_atan2_ulp(2.345, 4.567, 0.4743624180322145)
assert_atan2_ulp(2.345, 5.678, 0.39166069078743426)
assert_atan2_ulp(2.345, 11.234, 0.20578637377571402)
assert_atan2_ulp(2.345, -1.234, 2.0552039508843247)
assert_atan2_ulp(2.345, -2.345, 2.356194490192345)
assert_atan2_ulp(2.345, -3.456, 2.545421816248491)
assert_atan2_ulp(2.345, -10.123, 2.9139570701540496)
assert_atan2_ulp(2.345, -13.456, 2.9690537326544315)
assert_atan2_ulp(2.345, 3.1415926, 0.6412166908574847)
assert_atan2_ulp(2.345, 2.7182818, 0.7118080031028465)
assert_atan2_ulp(2.345, 1.6180339, 0.9668179997807553)
assert_atan2_ulp(2.345, 1.4142136, 1.0281180120188276)
assert_atan2_ulp(2.345, 1.7320508, 0.9346219038169203)
assert_atan2_ulp(2.345, 0.5772157, 1.3294468952153247)
assert_atan2_ulp(2.345, 0.6931472, 1.2833947495882423)
assert_atan2_ulp(2.345, 0.4342945, 1.3876709798140812)
assert_atan2_ulp(2.345, 0.0000001, 1.5707962841509733)
assert_atan2_ulp(2.345, 1000000000, 0.000000002345)
assert_atan2_ulp(2.345, 31415926535897.125, 0.00000000000007464366831010084)
assert_atan2_ulp(2.345, -27182818284590.566, 3.141592653589707)
assert_atan2_ulp(2.345, @double.min_value, 3.141592653589793)
assert_atan2_ulp(2.345, @double.infinity, 0)
assert_atan2_ulp(2.345, @double.neg_infinity, 3.141592653589793)
assert_atan2_ulp(2.345, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(3.456, 0, 1.5707963267948966)
assert_atan2_ulp(3.456, 1, 1.2891368759113806)
assert_atan2_ulp(3.456, 2, 1.0461830702002548)
assert_atan2_ulp(3.456, 3, 0.8559130259709072)
assert_atan2_ulp(3.456, 5, 0.6047954753658832)
assert_atan2_ulp(3.456, 6, 0.5225854815961852)
assert_atan2_ulp(3.456, 7, 0.458606405143729)
assert_atan2_ulp(3.456, 13, 0.25983619644081307)
assert_atan2_ulp(3.456, 14, 0.24201849954490406)
assert_atan2_ulp(3.456, 15, 0.22644825790814713)
assert_atan2_ulp(3.456, -1, 1.8524557776784125)
assert_atan2_ulp(3.456, -2, 2.0954095833895385)
assert_atan2_ulp(3.456, -8, 2.7338079149124033)
assert_atan2_ulp(3.456, -15, 2.9151443956816463)
assert_atan2_ulp(3.456, 0.12, 1.5360880485696218)
assert_atan2_ulp(3.456, 0.23, 1.5043433925173144)
assert_atan2_ulp(3.456, 0.34, 1.472732257453854)
assert_atan2_ulp(3.456, 0.78, 1.3488210006110635)
assert_atan2_ulp(3.456, 0.89, 1.3187496829575491)
assert_atan2_ulp(3.456, 0.9, 1.3160380243590017)
assert_atan2_ulp(3.456, -0.87, 1.8174083081916783)
assert_atan2_ulp(3.456, -0.76, 1.7872583120538386)
assert_atan2_ulp(3.456, -0.32, 1.6631256615264955)
assert_atan2_ulp(3.456, -0.21, 1.6314855957632535)
assert_atan2_ulp(3.456, -0.1, 1.5997234407551049)
assert_atan2_ulp(3.456, 0.12345, 1.5350910216187115)
assert_atan2_ulp(3.456, 0.23456, 1.503029881744421)
assert_atan2_ulp(3.456, 0.34567, 1.4711076202552116)
assert_atan2_ulp(3.456, 0.45678, 1.4393878448200979)
assert_atan2_ulp(3.456, 0.56789, 1.4079317353091514)
assert_atan2_ulp(3.456, -0.98765, 1.8491552200350336)
assert_atan2_ulp(3.456, -0.87654, 1.8191870962347096)
assert_atan2_ulp(3.456, -0.76543, 1.7887565214706704)
assert_atan2_ulp(3.456, -0.10987, 1.6025767111135254)
assert_atan2_ulp(0.4342945, -13.456, 3.1093286973825465)
assert_atan2_ulp(0.4342945, 3.1415926, 0.13736958963363063)
assert_atan2_ulp(0.4342945, 2.7182818, 0.15842906410207624)
assert_atan2_ulp(0.4342945, 1.6180339, 0.26222813661122907)
assert_atan2_ulp(0.4342945, 1.4142136, 0.29795097792034164)
assert_atan2_ulp(0.4342945, 1.7320508, 0.24567505711978363)
assert_atan2_ulp(0.4342945, 0.5772157, 0.6450324720777276)
assert_atan2_ulp(0.4342945, 0.6931472, 0.5597163799121061)
assert_atan2_ulp(0.4342945, 0.4342945, 0.7853981633974483)
assert_atan2_ulp(0.4342945, 0.0000001, 1.570796096536397)
assert_atan2_ulp(0.4342945, 1000000000, 0.00000000043429450000000005)
assert_atan2_ulp(
0.4342945, 31415926535897.125, 0.000000000000013824023286524984,
)
assert_atan2_ulp(0.4342945, -27182818284590.566, 3.141592653589777)
assert_atan2_ulp(0.4342945, @double.min_value, 3.141592653589793)
assert_atan2_ulp(0.4342945, @double.infinity, 0)
assert_atan2_ulp(0.4342945, @double.neg_infinity, 3.141592653589793)
assert_atan2_ulp(0.4342945, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(0.0000001, 0, 1.5707963267948966)
assert_atan2_ulp(0.0000001, 1, 0.00000009999999999999966)
assert_atan2_ulp(0.0000001, 2, 0.00000004999999999999996)
assert_atan2_ulp(0.0000001, 3, 0.00000003333333333333332)
assert_atan2_ulp(0.0000001, 5, 0.000000019999999999999997)
assert_atan2_ulp(0.0000001, 6, 0.000000016666666666666664)
assert_atan2_ulp(0.0000001, 7, 0.000000014285714285714284)
assert_atan2_ulp(0.0000001, 13, 0.000000007692307692307693)
assert_atan2_ulp(0.0000001, 14, 0.000000007142857142857142)
assert_atan2_ulp(0.0000001, 15, 0.000000006666666666666666)
assert_atan2_ulp(0.0000001, -1, 3.1415925535897933)
assert_atan2_ulp(0.0000001, -2, 3.1415926035897934)
assert_atan2_ulp(0.0000001, -8, 3.1415926410897934)
assert_atan2_ulp(0.0000001, -15, 3.141592646923127)
assert_atan2_ulp(0.0000001, 0.12, 0.0000008333333333331404)
assert_atan2_ulp(0.0000001, 0.23, 0.0000004347826086956247)
assert_atan2_ulp(0.0000001, 0.34, 0.00000029411764705881503)
assert_atan2_ulp(0.0000001, 0.78, 0.0000001282051282051275)
assert_atan2_ulp(0.0000001, 0.89, 0.00000011235955056179728)
assert_atan2_ulp(0.0000001, 0.9, 0.00000011111111111111065)
assert_atan2_ulp(0.0000001, -0.87, 3.1415925386472643)
assert_atan2_ulp(0.0000001, -0.76, 3.141592522010846)
assert_atan2_ulp(0.0000001, -0.32, 3.141592341089793)
assert_atan2_ulp(0.0000001, -0.21, 3.141592177399317)
assert_atan2_ulp(0.0000001, -0.1, 3.1415916535897934)
assert_atan2_ulp(0.0000001, 0.12345, 0.0000008100445524502076)
assert_atan2_ulp(0.0000001, 0.23456, 0.000000426330150068187)
assert_atan2_ulp(0.0000001, 0.34567, 0.0000002892932565741812)
assert_atan2_ulp(0.0000001, 0.45678, 0.00000021892377074302375)
assert_atan2_ulp(0.0000001, 0.56789, 0.00000017609044005000786)
assert_atan2_ulp(0.0000001, -0.98765, 3.1415925523393504)
assert_atan2_ulp(0.0000001, -0.87654, 3.1415925395048685)
assert_atan2_ulp(0.0000001, -0.76543, 3.141592522944274)
assert_atan2_ulp(0.0000001, -0.10987, 3.1415917434232328)
assert_atan2_ulp(0.0000001, 1.234, 0.00000008103727714748767)
assert_atan2_ulp(0.0000001, 2.345, 0.00000004264392324093814)
assert_atan2_ulp(0.0000001, 3.456, 0.000000028935185185185176)
assert_atan2_ulp(0.0000001, 4.567, 0.000000021896211955331722)
assert_atan2_ulp(0.0000001, 5.678, 0.000000017611835153222962)
assert_atan2_ulp(0.0000001, 11.234, 0.000000008901548869503293)
assert_atan2_ulp(0.0000001, -1.234, 3.1415925725525162)
assert_atan2_ulp(0.0000001, -2.345, 3.14159261094587)
assert_atan2_ulp(0.0000001, -3.456, 3.141592624654608)
assert_atan2_ulp(0.0000001, -10.123, 3.1415926437112986)
assert_atan2_ulp(0.0000001, -13.456, 3.141592646158164)
assert_atan2_ulp(0.0000001, 3.1415926, 0.00000003183098916135719)
assert_atan2_ulp(0.0000001, 2.7182818, 0.00000003678794450229551)
assert_atan2_ulp(0.0000001, 1.6180339, 0.00000006180340226493392)
assert_atan2_ulp(0.0000001, 1.4142136, 0.00000007071067623730943)
assert_atan2_ulp(0.0000001, 1.7320508, 0.00000005773502717125842)
assert_atan2_ulp(0.0000001, 0.5772157, 0.00000017324546092561065)
assert_atan2_ulp(0.0000001, 0.6931472, 0.00000014426950004270276)
assert_atan2_ulp(0.0000001, 0.4342945, 0.00000023025849970468938)
assert_atan2_ulp(0.0000001, 0.0000001, 0.7853981633974483)
assert_atan2_ulp(0.0000001, 1000000000, 0.0000000000000001)
assert_atan2_ulp(
0.0000001, 31415926535897.125, 0.0000000000000000000031830988618379883,
)
assert_atan2_ulp(0.0000001, -27182818284590.566, 3.141592653589793)
assert_atan2_ulp(0.0000001, @double.min_value, 3.141592653589793)
assert_atan2_ulp(0.0000001, @double.infinity, 0)
assert_atan2_ulp(0.0000001, @double.neg_infinity, 3.141592653589793)
assert_atan2_ulp(0.0000001, @double.not_a_number, @double.not_a_number)
assert_atan2_ulp(1000000000, 3, 1.5707963237948965)
assert_atan2_ulp(1000000000, -1.234, 1.5707963280288966)
assert_atan2_ulp(1000000000, 1000000000, 0.7853981633974483)
assert_atan2_ulp(@double.neg_infinity, @double.infinity, -0.7853981633974483)
assert_atan2_ulp(
@double.neg_infinity, @double.neg_infinity, -2.356194490192345,
)
assert_atan2_ulp(
@double.neg_infinity, @double.not_a_number, @double.not_a_number,
)
assert_atan2_ulp(@double.not_a_number, 0, @double.not_a_number)
assert_atan2_ulp(
@double.not_a_number, @double.neg_infinity, @double.not_a_number,
)
assert_atan2_ulp(
@double.not_a_number, @double.not_a_number, @double.not_a_number,
)
}