package Ġmath Functions Ċ Ċ import Ġorg . jetbrains . num kt . array Ċ import Ġorg . jetbrains . num kt . core . None Ċ import Ġorg . jetbrains . num kt . math .* Ċ import Ġkotlin . math . E Ċ import Ġkotlin . math . pow Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ Ċ class ĠTest Exp And Log Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Exp And Exp m 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcheck Ġ= Ġarray ( array Of ( 1 . 0 0 0 0 0 0 0 0 0 0 5 e - 1 0 , Ġ 1 . 0 0 0 0 0 0 0 8 2 7 4 0 3 7 1 e - 1 0 )) ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġarray ( array Of ( 1 e - 1 0 )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( exp m 1 ( a )[ 0 ], Ġcheck [ 0 ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( exp ( a )[ 0 ] Ġ- Ġ 1 . 0 , Ġcheck [ 1 ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Exp 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcheck Ġ= Ġarray ( array Of ( 4 . 0 , Ġ 8 . 0 )) ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġarray ( array Of ( 2 , Ġ 3 )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( exp 2 ( a ), Ġcheck ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Log () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcheck Ġ= Ġarray ( array Of ( 0 . 0 , Ġ 1 . 0 , Ġ 2 . 0 )) ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġarray ( array Of ( 1 . 0 , ĠE , ĠE . pow ( 2 ), Ġ 0 . 0 )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( log ( a )[ None .. 3 ], Ġcheck ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( log ( a )[ 3 ], ĠDouble . NEGATIVE _ INFINITY ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Log 1 0 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġarray ( array Of ( 1 e - 1 5 , Ġ- 3 . 0 )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( log 1 0 ( a )[ 0 ], Ġ- 1 5 . 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( log 1 0 ( a )[ 1 ], ĠDouble . NaN ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Log 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcheck Ġ= Ġarray ( array Of ( 0 . 0 , Ġ 1 . 0 , Ġ 4 . 0 )) ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġarray ( array Of ( 0 , Ġ 1 , Ġ 2 , Ġ 2 . 0 . pow ( 4 ). toInt ())) ĊĠĠĠĠĠĠĠ ĠassertEquals ( log 2 ( a )[ 1 .. 4 ], Ġcheck ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( log 2 ( a )[ 0 ], ĠDouble . NEGATIVE _ INFINITY ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Log 1 p () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcheck Ġ= Ġarray ( array Of ( 1 e - 9 9 )) ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġarray ( array Of ( 1 e - 9 9 )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( log 1 p ( a ), Ġcheck ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Log Add Exp () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprob 1 Ġ= Ġlog ( array ( array Of ( 1 e - 5 0 ))) ĊĠĠĠĠĠĠĠ Ġval Ġprob 2 Ġ= Ġlog ( array ( array Of ( 2 . 5 e - 5 0 ))) ĊĠĠĠĠĠĠĠ Ġval Ġprob 1 2 Ġ= Ġlog ad dex p ( prob 1 , Ġprob 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( prob 1 2 [ 0 ], Ġ- 1 1 3 . 8 7 6 4 9 1 6 8 1 2 0 6 9 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( exp ( prob 1 2 )[ 0 ], Ġ 3 . 5 0 0 0 0 0 0 0 0 0 0 0 0 0 5 7 e - 5 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Log Add Exp 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprob 1 Ġ= Ġlog 2 ( array ( array Of ( 1 e - 5 0 ))) ĊĠĠĠĠĠĠĠ Ġval Ġprob 2 Ġ= Ġlog 2 ( array ( array Of ( 2 . 5 e - 5 0 ))) ĊĠĠĠĠĠĠĠ Ġval Ġprob 1 2 Ġ= Ġlog ad dex p 2 ( prob 1 , Ġprob 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( prob 1 2 [ 0 ], Ġ- 1 6 4 . 2 8 9 0 4 9 8 2 2 3 1 0 5 2 ) ĊĠĠĠ Ġ} Ċ }