# Math $B%b%8%e!\<%k$N8\_49@-(B(was: Math::atan2(0, 0) on ruby 1.9.2)

**URL:** <https://www.ruby-forum.com/t/math-b-b-8-e-k-n8-49-b-was-math-atan2-0-0-on-ruby-1-9-2/194062>\
**Category:** Development\
**Created:** [August 29, 2010, 4:32pm UTC](https://www.ruby-forum.com/t/math-b-b-8-e-k-n8-49-b-was-math-atan2-0-0-on-ruby-1-9-2/194062 "2010-08-29T16:32:32Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![kubo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/8edcca/32.png) [@kubo](https://www.ruby-forum.com/u/kubo)\
**Post date:** [August 29, 2010, 4:32pm UTC](https://www.ruby-forum.com/t/math-b-b-8-e-k-n8-49-b-was-math-atan2-0-0-on-ruby-1-9-2/194062/1 "2010-08-29T16:32:32Z")

</div>

e$B5WJ]$G$9!#e(B

Mathe$B%b%8%e!\<%k$N4X?t$N8\_49@-$ND4::$G$9!#D4::$N=gHV$Oe(B math.c  
e$B$GDj5A$5$le(B  
e$B$F$$$k=g=x$G!“A4e(B26e$B8D$N4X?t$N$&$A!”:G=i$Ne(B7e$B8D$N$\_D4::$7$^$7$?!#;D$j$Ne(B19  
e$B8D$K$D$$$F$O$f$C$/$je(B(e$B=5$K0l2s$0$i$$!)e(B)e$BD4$Y$F$$$-$^$9!#e(B

3,  
4e$B2s8+D\>$7$?$1$I!“$=$N$?$S$K4V0c$$$,8+IU$+$k$N$G!”$^$@4V0c$$$,;D$C$Fe(B  
e$B$$$k2DG=@-$,$"$j$^$9!#e(Bm(\_\_)m

e$B%A%'%C%/9`L$O0J2\<$Ne(B2e$B$D!#e(B

(1) SUSv3e$B=`5r4D6-$G$Ne(B 1.9.1 e$B$He(B trunk e$B$NHs8\_49e(B

libm e$B$,%\*%W%7%g%s$NF0:ne(B(\*1)e$B$b4^$a$Fe(B SUSv3  
e$B$K=`5r$7$F$$$k$H2\>Dj$7e(B  
e$B$?\>e$G!"e(B1.9.1 e$B$He(B trunk e$B$NHs8\_49$r%A%'%C%/!#e(B

\*1 SUSv3 e$B$N;EMM=q$Ne(B [MX]|X\> e$B$He(B \<X| e$B$G0O$^$l$?ItJ,e(B

(2) trunk e$B$G$N%W%i%C%H%U%)!\<%`4V$NHs8\_49$N2DG=@-e(B

trunk  
e$B$G$O?t3X4X?t$r8F$VA0$KHO0O%A%‘%C%/$r9T$J$C$F$$$k!#HO0O%A%’%Ce(B  
e$B%/$rDL$C$?8e$K%W%i%C%H%U%)!\<%`0MB8$NF0:n$r5/$3$92DG=@-$N$"$k2U=j$re(B  
e$B%A%'%C%/$7$?!#6qBNE\*$K$O!"e(BSUSv3  
e$B$G%\*%W%7%g%s$NF0:n$H$5$l$F$$$kItJ,e(B  
e$B$H!"e(BSUSv2 e$B$Ge(B either … or …  
e$B$H=q$+$l$F$$$kItJ,$G$9!#e(B

e$B$A$J$\_$K$3$l$O!V2DG=@-!W$N%A%'%C%/$G$“$C$F!#\<B:]$K%W%i%C%H%U%)!\<%`0Me(B  
e$BB8$,$”$k$+$I$&$+$OITL@$G$9!#=EH"$N6y$r$D$D$$$F$$$k$h$&$J46$8$,$9$k2Ue(B  
e$B=j$b$“$C$?$1$I!”$=$N$^$^5-:$7$^$7$?!#e(B

e$B$A$J$\_$K!“Hs8\_49$N\>pJs$r5s$2$k$N$@$1$,L\E\*$G$9!#%3%a%s%H$rIU$1$F$$$k2Ue(B  
e$B=j$,$”$j$^$9$,!":#8e$N%P!\<%8%g%s$GBP=h$9$Y$-$+$I$&$+$H$$$&2ACMH=CG$O9Te(B  
e$B$J$C$F$$$^$;$s!#e(B  
([ruby-core:28286]e$B$r8+$k$H!“0U?^E\*$JHs8\_49$b$”$j$=$&$G$9$7e(B)

1. atan2  
========

## 1.1. SUSv3e$B=`5r4D6-$G$Ne(B 1.9.1 e$B$He(B trunk e$B$NHs8\_49e(B

e$B?t$,B?$$$N$GI=7A\<0$r;HMQ!#EyI}%U%)%s%H$r;HMQ$7$F$/$@$5$$!#e(B

```
      e$B<0e(B 1.9.1 trunk
------------------------- -------- ------------

```

1. atan2(e$B@5$NM-8BCMe(B, -Inf) +PI DomainError
2. atan2(e$BIi$NM-8BCMe(B, -Inf) -PI DomainError
3. atan2(e$B@5$NM-8BCMe(B, +Inf) +0.0 DomainError
4. atan2(e$BIi$NM-8BCMe(B, +Inf) -0.0 DomainError
5. atan2(+Inf, e$B@5Ii$NM-8BCMe(B) +PI/2 DomainError
6. atan2(-Inf, e$B@5Ii$NM-8BCMe(B) -PI/2 DomainError
7. atan2(+Inf, -Inf) +3PI/4 DomainError
8. atan2(-Inf, -Inf) -3PI/4 DomainError
9. atan2(+Inf, +Inf) +PI/4 DomainError
10. atan2(-Inf, +Inf) -PI/4 DomainError

1.9.1 e$B$N5sF0$Ne(B 1e$B!Ae(B6  
e$B$^$G$O?t3XE\*$K8+$F$b0UL#$,$"$j$=$&!#?t\<0$G$I$&$3$&e(B  
e$B$H$$$&$N$O$o$+$i$J$$$,!"e(BWikipedia  
e$B$Ne(B3e$B\<!85%0%i%Ue(B(\*2)e$B$r8+$k$H!"e(Bxe$B\<4!"e(Bye$B\<4e(B  
e$B$NJRJ}$rL58B$K?-$P$7$?\>l9g$r9M$($k$He(B 1.9.1  
e$B$NCM$O@5$7$=$&$G$9!#e(B

\*2 [atan2 - Wikipedia](http://en.wikipedia.org/wiki/Atan2#Illustrations)

7e$B!Ae(B10 e$B$O?t3XE\*$K$O$“$d$7$$!#Nc$($P!“e(Batan2(y, x)  
e$B$NLa$jCM$,e(B +PI/4 e$B$K$Je(B  
e$B$k$?$a$K$Oe(B y/x == 1 e$B$G$”$kI,MW$,$”$k$,!"e(B+Inf  
e$BF1;N$NHfN($O$J$s$i$+$NA0e(B  
e$BDs\>r7o$r$D$1$J$$8B$jIT2DG=$J$?$a!#e(B

## 1.2. trunk e$B$G$N%W%i%C%H%U%)!\<%`4V$NHs8\_49$N2DG=@-e(B

1. atan2(y, x) e$B$Ne(B y, x e$B$N$I$A$i$+$,e(B NaN → NaN

SUSv2 e$B$G$O\>e5-$NDL$j$NCM$rLa$9$3$H$K$J$C$F$$$k$N$KBP$7!"e(BSUSv3  
e$B$G$O%\*%We(B  
e$B%7%g%s$NF0:n$K3J2\<$2$5$l$F$$$k!#e(B

1. cos  
======

## 2.1. SUSv3e$B=`5r4D6-$G$Ne(B 1.9.1 e$B$He(B trunk e$B$NHs8\_49e(B

e$B%=!\<%9%3!\<%I$NJQ99$,$J$$$N$GHs8\_49$J$7e(B

## 2.2. trunk e$B$G$N%W%i%C%H%U%)!\<%`4V$NHs8\_49$N2DG=@-e(B

1. cos(NaN) → NaN
2. cos(+0.0) → 1.0
3. cos(-0.0) → 1.0
4. cos(+Inf) → SUSv3 e$B$G$Oe(B NaN e$B$^$?$O\<BAu0MB8$NCM!"e(BSUSv2  
e$B$G$Oe(B 0.0 e$B$^$?$Oe(B NaN
5. cos(-Inf) → SUSv3 e$B$G$Oe(B NaN e$B$^$?$O\<BAu0MB8$NCM!"e(BSUSv2  
e$B$G$Oe(B 0.0 e$B$^$?$Oe(B NaN

SUSv3 e$B$G$O\>e5-$9$Y$F%\*%W%7%g%s$NF0:n$H$J$C$F$$$k!#e(BSUSv2  
e$B$G$O!"e(B1, 4, 5  
e$B$ODj5A$5$l$F$$$k$,!"e(B2, 3 e$B$N5-=R$O$J$$!#e(B  
(2, 3 e$B$K4X$7$F$O!“IaDL$K9M$($l$Pe(B 1.0  
e$B0J30$NCM$rLa$9$3$H$O$”$j$($J$$$He(B  
e$B;W$&$,e(B…)

1. sin  
======

## 3.1. SUSv3e$B=`5r4D6-$G$Ne(B 1.9.1 e$B$He(B trunk e$B$NHs8\_49e(B

e$B%=!\<%9%3!\<%I$NJQ99$,$J$$$N$GHs8\_49$J$7e(B

## 3.2. trunk e$B$G$N%W%i%C%H%U%)!\<%`4V$NHs8\_49$N2DG=@-e(B

1. sin(NaN) → NaN
2. sin(+0.0) → +0.0
3. sin(-0.0) → -0.0
4. sin(e$BHs@55,?te(B\*3) → SUSv3e$B$G$O0z?t$NCM!"e(BSUSv2(\*4)  
e$B$G$Oe(B 0.0
5. sin(+Inf) → SUSv3 e$B$G$Oe(B NaN e$B$^$?$O\<BAu0MB8$NCM!"e(BSUSv2  
e$B$G$Oe(B 0.0 e$B$^$?$Oe(B NaN
6. sin(-Inf) → SUSv3 e$B$G$Oe(B NaN e$B$^$?$O\<BAu0MB8$NCM!"e(BSUSv2  
e$B$G$Oe(B 0.0 e$B$^$?$Oe(B NaN

\*3 e$BHs@55,?te(B(subnormal)e$B$H$O!"e(Bdouble e$B$N\>l9g!“e(B-1.0E-95  
e$B$He(B +1.0E-95 e$B$N4V$Ne(B  
0e$B0J30$NCM!#e(B  
\*4 SUSv2  
e$B$N;EMM=q$G$O!VLa$jCM$,%”%s%@!\<%U%m!\<$7$?$H$-!W$H5-=R$5$l$F$$e(B  
e$B$k!#0z?t$,Hs\>o$K\>.$5$$$H$-!“La$jCM$O0z?t$H$[$\F1$8CM$K$J$k$N$G!VLae(B  
e$B$jCM$,%”%s%@!\<%U%m!\<!We(B → e$B!VLa$jCM$,Hs@55,?t!We(B →   
e$B!V0z?t$,Hs@55,?t!We(B  
e$B$H$$$C$?O@K!!#e(B

SUSv3 e$B$G$O\>e5-$9$Y$F%\*%W%7%g%s$NF0:n$H$J$C$F$$$k!#e(BSUSv2  
e$B$G$O!"e(B1,4,5,6  
e$B$ODj5A$5$l$F$$$k$,!"e(B2, 3 e$B$N5-=R$O$J$$!#e(B

1. tan  
======

## 4.1. SUSv3e$B=`5r4D6-$G$Ne(B 1.9.1 e$B$He(B trunk e$B$NHs8\_49e(B

e$B%=!\<%9%3!\<%I$NJQ99$,$J$$$N$GHs8\_49$J$7e(B

## 4.2. trunk e$B$G$N%W%i%C%H%U%)!\<%`4V$NHs8\_49$N2DG=@-e(B

1. tan(NaN) → NaN
2. tan(+0.0) → +0.0
3. tan(-0.0) → -0.0
4. tan(e$BHs@55,?te(B) → SUSv3 e$B$G$O0z?t$NCM!"e(BSUSv2(\*4)e$B$G$Oe(B  
0.0
5. tan(+Inf) → SUSv3 e$B$G$Oe(B NaN e$B$^$?$O\<BAu0MB8$NCM!"e(BSUSv2  
e$B$G$Oe(B 0.0 e$B$^$?$Oe(B NaN
6. tan(-Inf) → SUSv3 e$B$G$Oe(B NaN e$B$^$?$O\<BAu0MB8$NCM!"e(BSUSv2  
e$B$G$Oe(B 0.0 e$B$^$?$Oe(B NaN
7. tan(e$BM-8BCMe(B) e$B$,e(B overflow e$B$7$?$H$-e(B → ±Inf

SUSv3 e$B$G$Oe(B 1,2,3,4,5,6 e$B$,%\*%W%7%g%s$NF0:n$G!"e(B7 e$B$Oe(B XSI  
e$B3HD%$H$J$C$F$$$k!#e(BSUSv2  
e$B$G$O!"e(B1, 4, 5, 6,7 e$B$ODj5A$5$l$F$$$k$,!"e(B2, 3  
e$B$N5-=R$O$J$$!#e(B

1. acos  
=======

## 5.1. SUSv3e$B=`5r4D6-$G$Ne(B 1.9.1 e$B$He(B trunk e$B$NHs8\_49e(B

e$B%=!\<%9%3!\<%I$NJQ99$O$"$k$,!"5sF0$NJQ2=$J$7!#e(B

## 5.2. trunk e$B$G$N%W%i%C%H%U%)!\<%`4V$NHs8\_49$N2DG=@-e(B

1. acos(NaN) → NaN
2. acos(+1.0) → +0.0

SUSv3 e$B$G$O\>e5-$9$Y$F%\*%W%7%g%s$NF0:n$H$J$C$F$$$k!#e(BSUSv2  
e$B$G$O!"e(B1 e$B$ODj5Ae(B  
e$B$5$l$F$$$k$,!"e(B2 e$B$N5-=R$O$J$$!#e(B

1. asin  
=======

## 6.1. SUSv3e$B=`5r4D6-$G$Ne(B 1.9.1 e$B$He(B trunk e$B$NHs8\_49e(B

SUSv3 e$B$K$O!"e(B  
If x is subnormal, a range error may occur and x should be returned.  
e$B$H=q$+$l$F$$$k$N$G!"0z?t$,Hs@55,?t$N$H$-\<BAu$K$h$C$F$Oe(B errno  
e$B$Ke(B ERANGE  
e$B$,@\_Dj$5$l$k!#$3$N$H$-e(B 1.9.1 e$B$G$Oe(B Errno::ERANGE  
e$BNc30$,5s$,$k!#e(B  
e$B0lJ}!"e(Btrunk e$B$G$ONc30$r5s$2$J$$!#e(B

## 6.2. trunk e$B$G$N%W%i%C%H%U%)!\<%`4V$NHs8\_49$N2DG=@-e(B

1. asin(NaN) → NaN
2. asin(+0.0) → +0.0
3. asin(-0.0) → -0.0
4. asin(e$BHs@55,?te(B) → SUSv3  
e$B$G$O0z?t$NCM!#e(BSUSv2(\*4)e$B$G$Oe(B 0.0

SUSv3 e$B$G$O\>e5-$9$Y$F%\*%W%7%g%s$NF0:n$H$J$C$F$$$k!#e(BSUSv2  
e$B$G$O!"e(B1, 4 e$B$Oe(B  
e$BDj5A$5$l$F$$$k$,!"e(B2, 3 e$B$N5-=R$O$J$$!#e(B

1. atan  
=======

## 7.1. SUSv3e$B=`5r4D6-$G$Ne(B 1.9.1 e$B$He(B trunk e$B$NHs8\_49e(B

e$B%=!\<%9%3!\<%I$NJQ99$,$J$$$N$GHs8\_49$J$7e(B

## 7.2. trunk e$B$G$N%W%i%C%H%U%)!\<%`4V$NHs8\_49$N2DG=@-e(B

1. atan(NaN) → NaN
2. atan(+0.0) → +0.0
3. atan(-0.0) → -0.0
4. atan(+Inf) → +PI/2
5. atan(-Inf) → -PI/2
6. atan(e$BHs@55,?te(B) → SUSv3  
e$B$G$O0z?t$NCM!#e(BSUSv2(\*4)e$B$G$Oe(B 0.0

SUSv3 e$B$G$O\>e5-$9$Y$F%\*%W%7%g%s$NF0:n$H$J$C$F$$$k!#e(BSUSv2  
e$B$G$O!"e(B1, 6 e$B$Oe(B  
e$BDj5A$5$l$F$$$k$,!"e(B2, 3, 4, 5 e$B$N5-=R$O$J$$!#e(B

---

<div class="post-metadata">

**Author:** ![kubo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/8edcca/32.png) [@kubo](https://www.ruby-forum.com/u/kubo)\
**Post date:** [September 6, 2010, 4:39pm UTC](https://www.ruby-forum.com/t/math-b-b-8-e-k-n8-49-b-was-math-atan2-0-0-on-ruby-1-9-2/194062/2 "2010-09-06T16:39:52Z")

</div>

e$B5WJ]$G$9!#e(B

Mathe$B%b%8%e!\<%k$N4X?t$N8\_49@-$ND4::BhFs2s$G$9!#A4e(B26e$B8D$N4X?t$N$&$Ae(B  
e$BBh0l2s$O:G=i$Ne(B7e$B8De(B(atan2, cos, sin, tan, acos, asin,  
atan)e$B$G!"BhFs2s$Ne(B  
e$B:#2s$O\<!$Ne(B7e$B8De(B(cosh, sinh, tanh, acosh, asinh, atanh,  
exp)e$B$G$9!#e(B

e$B%A%'%C%/9`L$O0J2\<$Ne(B2e$B$D!#e(B

(1) SUSv3e$B=`5r4D6-$G$Ne(B 1.9.1 e$B$He(B trunk e$B$NHs8\_49e(B

(2) trunk e$B$G$N%W%i%C%H%U%)!\<%`4V$NHs8\_49$N2DG=@-e(B

```
e$BIaDL$K9M$($l$PEvA3$NF0:n$H8@$($k$b$N$be(B SUSv3 

```

e$B$G$O%\*%W%7%g%s$NF0:ne(B  
e$B$K$J$C$F$$$kLOMM!#EvA3$8$c$J$$F0:n$r$9$k\<BAu$b$"$k$+$i$J$N$+!)e(B

e$B\>$7$/$Oe(B ruby-dev:42155 e$B$r;2\>H!#e(B  
[http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/42155](http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/42155)

1. cosh  
=======

## 8.1. SUSv3e$B=`5r4D6-$G$Ne(B 1.9.1 e$B$He(B trunk e$B$NHs8\_49e(B

e$B%=!\<%9%3!\<%I$NJQ99$,$J$$$N$GHs8\_49$J$7e(B

## 8.2. trunk e$B$G$N%W%i%C%H%U%)!\<%`4V$NHs8\_49$N2DG=@-e(B

1. cosh(NaN) → NaN
2. cosh(+0.0) → 1.0
3. cosh(-0.0) → 1.0
4. cosh(+Inf) → +Inf
5. cosh(-Inf) → +Inf

SUSv3 e$B$G$O\>e5-$9$Y$F%\*%W%7%g%s$NF0:n$H$J$C$F$$$k!#e(BSUSv2  
e$B$G$O!"e(B1, 4, 5  
e$B$ODj5A$5$l$F$$$k$,!"e(B2, 3 e$B$N5-=R$O$J$$!#e(B

1. sinh  
=======

## 9.1. SUSv3e$B=`5r4D6-$G$Ne(B 1.9.1 e$B$He(B trunk e$B$NHs8\_49e(B

e$B%=!\<%9%3!\<%I$NJQ99$,$J$$$N$GHs8\_49$J$7e(B

## 9.2. trunk e$B$G$N%W%i%C%H%U%)!\<%`4V$NHs8\_49$N2DG=@-e(B

1. sinh(NaN) → NaN
2. sinh(+0.0) → +0.0
3. sinh(-0.0) → -0.0
4. sinh(+Inf) → +Inf
5. sinh(-Inf) → -Inf
6. sinh(e$BHs@55,?te(B) → SUSv3 e$B$G$Oe(B e$B0z?t$NCM!"e(BSUSv2  
e$B$G$Oe(B 0.0

SUSv3 e$B$G$O\>e5-$9$Y$F%\*%W%7%g%s$NF0:n$H$J$C$F$$$k!#e(BSUSv2  
e$B$G$O!"e(B1, 6  
e$B$ODj5A$5$l$F$$$k$,!"e(B2, 3, 4, 5 e$B$N5-=R$O$J$$!#e(B

1. tanh  
========

## 10.1. SUSv3e$B=`5r4D6-$G$Ne(B 1.9.1 e$B$He(B trunk e$B$NHs8\_49e(B

e$B%=!\<%9%3!\<%I$NJQ99$,$J$$$N$GHs8\_49$J$7e(B

## 10.2. trunk e$B$G$N%W%i%C%H%U%)!\<%`4V$NHs8\_49$N2DG=@-e(B

1. tanh(NaN) → NaN
2. tanh(+0.0) → +0.0
3. tanh(-0.0) → -0.0
4. tanh(+Inf) → +1.0
5. tanh(-Inf) → -1.0
6. tanh(e$BHs@55,?te(B) → SUSv3 e$B$G$Oe(B e$B0z?t$NCM!"e(BSUSv2  
e$B$G$Oe(B 0.0

SUSv3 e$B$G$O\>e5-$9$Y$F%\*%W%7%g%s$NF0:n$H$J$C$F$$$k!#e(BSUSv2  
e$B$G$O!"e(B1, 6  
e$B$ODj5A$5$l$F$$$k$,!"e(B2, 3, 4, 5 e$B$N5-=R$O$J$$!#e(B

1. acosh  
=========

## 11.1. SUSv3e$B=`5r4D6-$G$Ne(B 1.9.1 e$B$He(B trunk e$B$NHs8\_49e(B

e$B%=!\<%9%3!\<%I$NJQ99$O$"$k$,!"5sF0$NJQ2=$J$7!#e(B

## 11.2. trunk e$B$G$N%W%i%C%H%U%)!\<%`4V$NHs8\_49$N2DG=@-e(B

1. acosh(NaN) → NaN
2. acosh(+1.0) → +0.0
3. acosh(+Inf) → +Inf

SUSv3 e$B$G$O\>e5-$9$Y$F%\*%W%7%g%s$NF0:n$H$J$C$F$$$k!#e(BSUSv2  
e$B$G$O!"e(B1  
e$B$ODj5A$5$l$F$$$k$,!"e(B2, 3 e$B$N5-=R$O$J$$!#e(B

1. asinh  
=========

## 12.1. SUSv3e$B=`5r4D6-$G$Ne(B 1.9.1 e$B$He(B trunk e$B$NHs8\_49e(B

e$B%=!\<%9%3!\<%I$NJQ99$,$J$$$N$GHs8\_49$J$7e(B

## 12.2. trunk e$B$G$N%W%i%C%H%U%)!\<%`4V$NHs8\_49$N2DG=@-e(B

1. asinh(NaN) → NaN
2. asinh(+0.0) → +0.0
3. asinh(-0.0) → -0.0
4. asinh(+Inf) → +Inf
5. asinh(-Inf) → -Inf
6. asinh(e$BHs@55,?te(B) → SUSv3 e$B$G$Oe(B e$B0z?t$NCMe(B

SUSv3 e$B$G$O\>e5-$9$Y$F%\*%W%7%g%s$NF0:n$H$J$C$F$$$k!#e(BSUSv2  
e$B$G$O!"e(B1  
e$B$ODj5A$5$l$F$$$k$,!"e(B2, 3, 4, 5, 6 e$B$N5-=R$O$J$$!#e(B

1. atanh  
=========

## 13.1. SUSv3e$B=`5r4D6-$G$Ne(B 1.9.1 e$B$He(B trunk e$B$NHs8\_49e(B

```
                       1.9.1 trunk
---------------- ---------------- -------

```

1. atanh(e$BHs@55,?te(B) Errno::ERANGE(\*5) e$B0z?t$NCMe(B
2. atanh(+1.0) Errno::ERANGE +Inf
3. atanh(-1.0) Errno::ERANGE -Inf

\*5 e$B;EMM=q$K$Oe(B “a range error may occur”  
e$B$H=q$+$l$F$$$k!#Nc30$r\>e$2$k$+!"e(B  
trunk e$B$HF1$8F0:n$r$9$k$+$O\<BAu$K0MB8$9$k!#e(B

## 13.2. trunk e$B$G$N%W%i%C%H%U%)!\<%`4V$NHs8\_49$N2DG=@-e(B

1. atanh(NaN) → NaN
2. atanh(+0.0) → +0.0
3. atanh(-0.0) → -0.0
4. atanh(e$BHs@55,?te(B) → SUSv3 e$B$G$Oe(B e$B0z?t$NCMe(B

SUSv3 e$B$G$O\>e5-$9$Y$F%\*%W%7%g%s$NF0:n$H$J$C$F$$$k!#e(BSUSv2  
e$B$G$O!"e(B1  
e$B$ODj5A$5$l$F$$$k$,!"e(B2, 3, 4 e$B$N5-=R$O$J$$!#e(B

1. exp  
=======

## 14.1. SUSv3e$B=`5r4D6-$G$Ne(B 1.9.1 e$B$He(B trunk e$B$NHs8\_49e(B

e$B%=!\<%9%3!\<%I$NJQ99$,$J$$$N$GHs8\_49$J$7e(B

## 14.2. trunk e$B$G$N%W%i%C%H%U%)!\<%`4V$NHs8\_49$N2DG=@-e(B

1. exp(NaN) → NaN
2. exp(+0.0) → 1.0
3. exp(-0.0) → 1.0
4. exp(+Inf) → +Inf
5. exp(-Inf) → +0.0

SUSv3 e$B$G$O\>e5-$9$Y$F%\*%W%7%g%s$NF0:n$H$J$C$F$$$k!#e(BSUSv2  
e$B$G$O!"e(B1  
e$B$ODj5A$5$l$F$$$k$,!"e(B2, 3, 4, 5 e$B$N5-=R$O$J$$!#e(B
