pearu / functional_algorithms

Functional algorithms - definitions and implementations
BSD 3-Clause "New" or "Revised" License
6 stars 0 forks source link

JAX atanh accuracy and correctness #41

Open pearu opened 1 month ago

pearu commented 1 month ago
  -inf    1222=============================================================================================1322
  -3e35   22222231=====================================================================================12222222
  -3e32   112222222121=============================================================================121222222211
  -3e29   =112222221222111=====================================================================12222222222221==
  -3e26   ===11212222222222211=============================================================11222222222222111===
  -3e23   =====1123222222222222211=====================================================1222122222232222211=====
  -3e20   =======111222222222222222121==============================================12222222222222222111=======
  -3e17   =========11222232222222222221211======================================1222222222222322222211=========
  -3e14   ===========1122211111111111111111111==============================111111111111111111122111===========
  -3e11   =============11111111111111111111111111=======================11111111111111111111111211=============
  -2e8    ===============1111132121111111111111111111===============1111111111111111111112311111===============
  -2e5    ================1111322221111111111111111111111=======11111111111111111111122221211111===============
  -2e2    ================1111111122212111111111111111111111111111111111111111111222222111211111===============
  -2e-1   ================1111111122322221111111111111111111111111111111111111112222233111211111===============
  -2e-4   ================1111111122221111111111111111111111111111111111111111111112232111211111===============
  -2e-7   ================111111112122111=======================================1111232111211111===============
  -2e-10  ================111111112122111=======================================1111232111211111===============
  -2e-13  ================111111112122111=======================================1111232111211111===============
  -2e-16  ================111111112122111=======================================1111232111211111===============
  -2e-19  ================111111112112111=======================================1111232111211111===============
  -2e-22  ================111111112122111=======================================1111232111211111===============
  -2e-25  ================111111112122111=======================================1111232111211111===============
  -2e-28  ================111111112112111=======================================1111132111211111===============
  -2e-31  ================111111112112111=======================================1111232111211111===============
  -1e-34  ================111111112112111=======================================1111232111211111===============
  -1e-37  EEEEEEEEEEEEEEEE111111112E12111=======================================11111E211121111EEEEEEEEEEEEEEEE
  1e-37   ================111111112122111=======================================1111232111211111===============
  1e-34   ================111111112112111=======================================1111132111211111===============
  2e-31   ================111111112122111=======================================1111232111211111===============
  2e-28   ================111111112112111=======================================1111232111211111===============
  2e-25   ================111111112122111=======================================1111232111211111===============
  2e-22   ================111111112122111=======================================1112232111211111===============
  2e-19   ================111111112122111=======================================1112232111211111===============
  2e-16   ================111111112122111=======================================1112232111211111===============
  2e-13   ================111111112122111=======================================1112232111211111===============
  2e-10   ================111111112122111=======================================1111232111211111===============
  2e-7    ================111111112322211=11==111==11==111=====11==11==111=111==1222232111211111===============
  2e-4    ================1111111232222221111111111111111111111111111111111111112222232111211111===============
  2e-1    ================1111112122222221111111111111111111111111111111111111111222222111211111===============
  3e2     ================1111322222211111111111111111111=======11111111111111111112222222311111===============
  3e5     ===============11111322211111111111111111111=============11111111111111111112222311111===============
  3e8     =============222111111111111111111111111======================11111111111111111121111121=============
  3e11    ===========112221211111111111111111==============================1111111111111111122222211===========
  3e14    =========1122222222222222222122======================================12122222222222222222111=========
  4e17    =======121222222222221122111==============================================21211222122222222122=======
  4e20    =====1112222222222222121======================================================122222222232222221=====
  4e23    ===1122222222221221==============================================================12122122232222211===
  4e26    =112222222322221=====================================================================121222222222211=
  4e29    122222222211==============================================================================12222222221
  5e32    22222221=====================================================================================12222221
  5e35    1222=============================================================================================2222
          -inf  -3e29 -2e20 -1e11 -1e2  -8e-8 -6e-1 -4e-2 -3e-3 1e-33 1e-24 2e-15 3e-6  4e3   5e12  8e21  1e31
ULP-difference z jax:atanh(z) mpmath:atanh(z) numpy:atanh(z) fa:atanh(z)
2140282806 (-8.0140974e+27-5.88902e-39j) (-1.2478011e-28+1.5707964j) (-1.2478011e-28-1.5707964j) (-1.2478011e-28-1.5707964j) (-1.2478011e-28-1.5707964j)
2140282806 (8.304169e+24-5.88902e-39j) (1.2042144e-25+1.5707964j) (1.2042144e-25-1.5707964j) (1.2042144e-25-1.5707964j) (1.2042144e-25-1.5707964j)
61401560 (0.9970238+5.900613e-39j) (3.2543864+0j) (3.2543864+9.92784e-37j) (3.2543864+9.927841e-37j) (3.2543864+9.927841e-37j)
24905514 (-0.9340932+5.900613e-39j) (-1.6895759+0j) (-1.6895759+4.629023e-38j) (-1.6895759+4.629023e-38j) (-1.6895759+4.629023e-38j)
pearu commented 1 month ago

After disabling samples with subnormals (on CUDA):

  -inf    2231=============================================================================================1322
  -3e35   22232221=====================================================================================12222322
  -3e32   222323333221=============================================================================122233222222
  -3e29   1222332232222221=====================================================================1122223322222221
  -3e26   11122222233222222221=============================================================12222222222323222111
  -3e23   111112222322322222223211=====================================================122222222223223322211111
  -3e20   1111111122332232222223222221=============================================1122222222222232!32221111111
  -3e17   111111111222!3322222222222222111=====================================11222222222222233322221111111111
  -3e14   111111111=12233223222222222222222221=============================1122222222222222222222222=1111111111
  -3e11   111111111=111232222222122222211222221111=====================11222222122221222222222222211=1111111111
  -3e8    111111111=1111121222!222222222222222222211111111111111111111222222222222222222233222221111=1111111111
  -3e5    111111111=11111111123322232222222222222222222211111111122222222222222222222222223112211111=1111111111
  -3e2    111111111=11111111112222223322222222222222222222222222222222222222222222223322222112211111=1111111111
  -3e-1   111111111=11111111112212233332222222222222222222222222222222222222222222333321222112211111=1111111111
  -3e-4   111111111=11111111112211122322211111111111111111111111111111111111111122232311222112211111=1111111111
  -3e-7   111111111=111111111122111223222=======================================22222211222112211111=1111111111
  -3e-10  111111111=111111111122111223222=======================================22222211222112211111=1111111111
  -3e-13  111111111=111111111122111223222=======================================22222211222112211111=1111111111
  -3e-16  111111111=111111111122111223222=======================================22222211222112211111=1111111111
  -3e-19  111111111=111111111122111223222=======================================22222211222112211111=1111111111
  -3e-22  111111111=111111111122111223222=======================================22222211222112211111=1111111111
  -3e-25  111111111=111111111122111223222=======================================22222211222112211111=1111111111
  -3e-28  111111111=111111111122111223222=======================================22222211222112211111=1111111111
  -3e-31  111111111=111111111122111223222=======================================22222311222112211111=1111111111
  -3e-34  111111111=111111111122111223222=======================================22222211222112211111=1111111111
  -3e-37  111111111=111111111122111223222=======================================22222311222112211111=1111111111
  3e-37   111111111=111111111122111222222=======================================22222211222112211111=1111111111
  3e-34   111111111=111111111122111222222=======================================22222211222112211111=1111111111
  3e-31   111111111=111111111122111222222=======================================22222211222112211111=1111111111
  3e-28   111111111=111111111122111222222=======================================22222211222112211111=1111111111
  3e-25   111111111=111111111122111222222=======================================22222211222112211111=1111111111
  3e-22   111111111=111111111122111222222=======================================22222211222112211111=1111111111
  3e-19   111111111=111111111122111222222=======================================22222211222112211111=1111111111
  3e-16   111111111=111111111122111222222=======================================22222211222112211111=1111111111
  3e-13   111111111=111111111122111222222=======================================22222211222112211111=1111111111
  3e-10   111111111=111111111122111222222=======================================22222211222112211111=1111111111
  4e-7    111111111=11111111112211122222211111111111111111111111111111111111111122222311222112211111=1111111111
  4e-4    111111111=11111111112212223322211111111111111111111111111111111111111122233221222112211111=1111111111
  4e-1    111111111=11111111112322222222211111111111111111111111111111111111111122232222222112211111=1111111111
  4e2     111111111=11111111113322222111111111111111111111111111111111111111111111112222223212211111=1111111111
  4e5     111111111=11111112222211111111111111111111111111111111111111111111111111111111223222211111=1111111111
  4e8     111111111=1111112222211111=1111111111111=====================11111111111111111112222212111=1111111111
  4e11    111111111=1121322221111111=111111111=============================1111111111111111112222111=1111111111
  4e14    11111111111222322222122222221221=====================================12212122112211222222111111111111
  4e17    1111111111222222312212222221=============================================1122112211122232221211111111
  4e20    111112212222232121221221=====================================================112211111232232211111111
  5e23    11121222222223212121=============================================================11111122223221111111
  5e26    1122222222121321=====================================================================1121122222221211
  5e29    112222222111=============================================================================112222222211
  5e32    22322321=====================================================================================11222221
  5e35    1221=============================================================================================1222
          -inf  -3e29 -2e20 -2e11 -1e2  -1e-7 -1e-1 -8e-2 -6e-3 2e-33 3e-24 3e-15 4e-6  5e3   7e12  9e21  1e31
ULP-difference z jax:atanh(z) mpmath:atanh(z) numpy:atanh(z) fa:atanh(z)
4 (2.48299e+21-9.422698e+17j) (4.0274007e-22-1.5707964j) (4.0274017e-22-1.5707964j) (4.0274017e-22-1.5707964j) (4.0274015e-22-1.5707964j)
4 (-9.70785e+18-3716133200000000j) (-1.03009383e-19-1.5707964j) (-1.0300941e-19-1.5707964j) (-1.0300941e-19-1.5707964j) (-1.030094e-19-1.5707964j)
4 (-17342552-449610.4j) (-5.76229e-08-1.5707964j) (-5.7622913e-08-1.5707964j) (-5.762291e-08-1.5707964j) (-5.7622902e-08-1.5707964j)