// File: philipperemy[P]digital-setting-circles/Test.cpp
// Function: Test::test_MathLib_hyperbolic()
void Test::test_MathLib_hyperbolic()
{
    setUpErrorMessage("test_MathLib_hyperbolic() - failed");

    assertEquals((MathLib::exp(3) + MathLib::exp(-3))/2, MathLib::cosh(3));
    assertEquals((MathLib::exp(3) - MathLib::exp(-3))/2, MathLib::sinh(3));
    assertEquals((MathLib::exp(3) - MathLib::exp(-3))/(MathLib::exp(3) + MathLib::exp(-3)), MathLib::tanh(3));

    assertEquals(MathLib::log(33 + MathLib::sqrt(33*33 - 1)), MathLib::acosh(33));
    assertEquals(MathLib::log(33 + MathLib::sqrt(33*33 + 1)), MathLib::asinh(33));

    //ERREUR NEED TO SEE WHATS GOING ON THERE
    //assertEquals(MathLib::log(0.5*MathLib::log((double)(1.0+0.6)/(1.0-0.6))), MathLib::atanh(0.6));

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x50(%rbp)
leaq -0x29(%rbp), %rdi
movq %rdi, -0x48(%rbp)
callq 0x3550
movq -0x48(%rbp), %rdx
leaq 0xa64b(%rip), %rsi      # 0x3dcda
leaq -0x28(%rbp), %rdi
callq 0x5b40
jmp 0x3369a
movq -0x50(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x35710
jmp 0x336a9
leaq -0x28(%rbp), %rdi
callq 0x31c0
leaq -0x29(%rbp), %rdi
callq 0x3370
movsd 0xa375(%rip), %xmm0     # 0x3da38
callq 0x7700
movsd %xmm0, -0xa0(%rbp)
movsd 0x5e68(%rip), %xmm0     # 0x39540
callq 0x7700
movaps %xmm0, %xmm1
movsd -0xa0(%rbp), %xmm0
addsd %xmm1, %xmm0
movsd 0x494c(%rip), %xmm1     # 0x38040
divsd %xmm1, %xmm0
movsd %xmm0, -0x98(%rbp)
movsd 0xa330(%rip), %xmm0     # 0x3da38
callq 0x7640
movq -0x50(%rbp), %rdi
movaps %xmm0, %xmm1
movsd -0x98(%rbp), %xmm0
callq 0x35d20
movsd 0xa30f(%rip), %xmm0     # 0x3da38
callq 0x7700
movsd %xmm0, -0x90(%rbp)
movsd 0x5e02(%rip), %xmm0     # 0x39540
callq 0x7700
movaps %xmm0, %xmm1
movsd -0x90(%rbp), %xmm0
subsd %xmm1, %xmm0
movsd 0x48e6(%rip), %xmm1     # 0x38040
divsd %xmm1, %xmm0
movsd %xmm0, -0x88(%rbp)
movsd 0xa2ca(%rip), %xmm0     # 0x3da38
callq 0x7660
movq -0x50(%rbp), %rdi
movaps %xmm0, %xmm1
movsd -0x88(%rbp), %xmm0
callq 0x35d20
movsd 0xa2a9(%rip), %xmm0     # 0x3da38
callq 0x7700
movsd %xmm0, -0x80(%rbp)
movsd 0x5d9f(%rip), %xmm0     # 0x39540
callq 0x7700
movaps %xmm0, %xmm1
movsd -0x80(%rbp), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, -0x70(%rbp)
movsd 0xa279(%rip), %xmm0     # 0x3da38
callq 0x7700
movsd %xmm0, -0x78(%rbp)
movsd 0x5d6f(%rip), %xmm0     # 0x39540
callq 0x7700
movsd -0x78(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x70(%rbp), %xmm0
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x68(%rbp)
movsd 0xa240(%rip), %xmm0     # 0x3da38
callq 0x7680
movq -0x50(%rbp), %rdi
movaps %xmm0, %xmm1
movsd -0x68(%rbp), %xmm0
callq 0x35d20
movsd 0xa2da(%rip), %xmm0     # 0x3daf0
callq 0x78a0
movaps %xmm0, %xmm1
movsd 0xa2b2(%rip), %xmm0     # 0x3dad8
addsd %xmm1, %xmm0
callq 0x7780
movsd %xmm0, -0x60(%rbp)
movsd 0xa29c(%rip), %xmm0     # 0x3dad8
callq 0x76a0
movq -0x50(%rbp), %rdi
movaps %xmm0, %xmm1
movsd -0x60(%rbp), %xmm0
callq 0x35d20
movsd 0xa28e(%rip), %xmm0     # 0x3dae8
callq 0x78a0
movaps %xmm0, %xmm1
movsd 0xa26e(%rip), %xmm0     # 0x3dad8
addsd %xmm1, %xmm0
callq 0x7780
movsd %xmm0, -0x58(%rbp)
movsd 0xa258(%rip), %xmm0     # 0x3dad8
callq 0x76c0
movq -0x50(%rbp), %rdi
movaps %xmm0, %xmm1
movsd -0x58(%rbp), %xmm0
callq 0x35d20
addq $0xa0, %rsp
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x338c2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x31c0
leaq -0x29(%rbp), %rdi
callq 0x3370
movq -0x38(%rbp), %rdi
callq 0x3540
nopw %cs:(%rax,%rax)