package Ġarray Ċ Ċ import Ġarray . complex . Complex Ċ import Ġkotlin . math . pow Ċ import Ġkotlin . math . sign Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assert Fails With Ċ import Ġkotlin . test . assertTrue Ċ Ċ class ĠScalar Test Ġ: ĠA PL Test () Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Res hape () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġparse AP L Expression (" 3 Ġ 4 Ġâ į ´ Ġâ į ³ 1 0 0 ") ĊĠĠĠĠĠĠĠ Ġassert Dimension ( dimensions Of Size ( 3 , Ġ 4 ), Ġresult ) ĊĠĠĠĠĠĠĠ Ġassert Array Content ( array Of ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 , Ġ 7 , Ġ 8 , Ġ 9 , Ġ 1 0 , Ġ 1 1 ), Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Add () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Scalar Test ("+ ") Ġ{ Ġa , Ġb Ġ-> Ġa Ġ+ Ġb Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Sub () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Scalar Test ("- ") Ġ{ Ġa , Ġb Ġ-> Ġa Ġ- Ġb Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Mul () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Scalar Test (" ÃĹ ") Ġ{ Ġa , Ġb Ġ-> Ġa Ġ* Ġb Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Div () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Scalar Test (" Ã · ") Ġ{ Ġa , Ġb Ġ-> Ġa Ġ/ Ġb Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Pow () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Scalar Test (" âĭ Ĩ ") Ġ{ Ġa , Ġb Ġ-> Ġa . pow ( b ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Add 1 Arg () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Scalar Test 1 Arg ("+ ") Ġ{ Ġa Ġ-> Ġa Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Sub 1 Arg () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Scalar Test 1 Arg ("- ") Ġ{ Ġa Ġ-> Ġ- a Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Mul Arg () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Scalar Test 1 Arg (" ÃĹ ") Ġ{ Ġa Ġ-> Ġa . sign Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Div Arg () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Scalar Test 1 Arg (" Ã · ") Ġ{ Ġa Ġ-> Ġif Ġ( a Ġ== Ġ 0 . 0 ) Ġ 0 . 0 Ġelse Ġ 1 Ġ/ Ġa Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Compare Equals () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Scalar Test (" =") Ġ{ Ġa , Ġb Ġ-> Ġif Ġ( a Ġ== Ġb ) Ġ 1 . 0 Ġelse Ġ 0 . 0 Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Compare Not Equals () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Scalar Test (" âī ł ") Ġ{ Ġa , Ġb Ġ-> Ġif Ġ( a Ġ!= Ġb ) Ġ 1 . 0 Ġelse Ġ 0 . 0 Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġaddition With Axis 0 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġparse AP L Expression (" 1 0 Ġ 2 0 Ġ 3 0 Ġ 4 0 Ġ+ [ 0 ] Ġ 4 Ġ 3 Ġ 2 Ġâ į ´ Ġ 1 0 0 + â į ³ 2 4 ") ĊĠĠĠĠĠĠĠ Ġassert Dimension ( dimensions Of Size ( 4 , Ġ 3 , Ġ 2 ), Ġresult ) ĊĠĠĠĠĠĠĠ Ġassert Array Content ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 1 0 , Ġ 1 1 1 , Ġ 1 1 2 , Ġ 1 1 3 , Ġ 1 1 4 , Ġ 1 1 5 , Ġ 1 2 6 , Ġ 1 2 7 , Ġ 1 2 8 , Ġ 1 2 9 , Ġ 1 3 0 , Ġ 1 3 1 , Ġ 1 4 2 , Ġ 1 4 3 , Ġ 1 4 4 , Ġ 1 4 5 , Ġ 1 4 6 , Ġ 1 4 7 , Ġ 1 5 8 , Ġ 1 5 9 , Ġ 1 6 0 , Ġ 1 6 1 , Ġ 1 6 2 , Ġ 1 6 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġaddition With Axis 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġparse AP L Expression (" 1 0 Ġ 2 0 Ġ 3 0 Ġ+ [ 1 ] Ġ 4 Ġ 3 Ġ 2 Ġâ į ´ Ġ 1 0 0 + â į ³ 2 4 ") ĊĠĠĠĠĠĠĠ Ġassert Dimension ( dimensions Of Size ( 4 , Ġ 3 , Ġ 2 ), Ġresult ) ĊĠĠĠĠĠĠĠ Ġassert Array Content ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 1 0 , Ġ 1 1 1 , Ġ 1 2 2 , Ġ 1 2 3 , Ġ 1 3 4 , Ġ 1 3 5 , Ġ 1 1 6 , Ġ 1 1 7 , Ġ 1 2 8 , Ġ 1 2 9 , Ġ 1 4 0 , Ġ 1 4 1 , Ġ 1 2 2 , Ġ 1 2 3 , Ġ 1 3 4 , Ġ 1 3 5 , Ġ 1 4 6 , Ġ 1 4 7 , Ġ 1 2 8 , Ġ 1 2 9 , Ġ 1 4 0 , Ġ 1 4 1 , Ġ 1 5 2 , Ġ 1 5 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġaddition With Axis 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġparse AP L Expression (" 1 0 Ġ 2 0 Ġ+ [ 2 ] Ġ 4 Ġ 3 Ġ 2 Ġâ į ´ Ġ 1 0 0 + â į ³ 2 4 ") ĊĠĠĠĠĠĠĠ Ġassert Dimension ( dimensions Of Size ( 4 , Ġ 3 , Ġ 2 ), Ġresult ) ĊĠĠĠĠĠĠĠ Ġassert Array Content ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 1 0 , Ġ 1 2 1 , Ġ 1 1 2 , Ġ 1 2 3 , Ġ 1 1 4 , Ġ 1 2 5 , Ġ 1 1 6 , Ġ 1 2 7 , Ġ 1 1 8 , Ġ 1 2 9 , Ġ 1 2 0 , Ġ 1 3 1 , Ġ 1 2 2 , Ġ 1 3 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 2 4 , Ġ 1 3 5 , Ġ 1 2 6 , Ġ 1 3 7 , Ġ 1 2 8 , Ġ 1 3 9 , Ġ 1 3 0 , Ġ 1 4 1 , Ġ 1 3 2 , Ġ 1 4 3 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmulti Function Plus () Ġ{ ĊĠĠĠĠĠĠĠ Ġparse AP L Expression (" 0 Ġ 1 Ġ 2 Ġ+ Ġ 1 0 Ġ 1 1 Ġ 1 2 Ġ+ Ġ 2 0 Ġ 2 1 Ġ 2 2 "). let Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Dimension ( dimensions Of Size ( 3 ), Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Array Content ( array Of ( 3 0 , Ġ 3 3 , Ġ 3 6 ), Ġresult ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmulti Function Plus With Special ised Array () Ġ{ ĊĠĠĠĠĠĠĠ Ġparse AP L Expression ("( internal : ensure Long Ġ 0 Ġ 1 Ġ 2 ) Ġ+ Ġ( internal : ensure Long Ġ 1 0 Ġ 1 1 Ġ 1 2 ) Ġ+ Ġ( internal : ensure Long Ġ 2 0 Ġ 2 1 Ġ 2 2 ) "). let Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Dimension ( dimensions Of Size ( 3 ), Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Array Content ( array Of ( 3 0 , Ġ 3 3 , Ġ 3 6 ), Ġresult ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmulti Function Plus And Minus () Ġ{ ĊĠĠĠĠĠĠĠ Ġparse AP L Expression (" 2 0 Ġ 2 1 Ġ 2 2 Ġ- Ġ 0 Ġ 1 Ġ 2 Ġ+ Ġ 1 0 Ġ 1 1 Ġ 1 2 "). let Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Dimension ( dimensions Of Size ( 3 ), Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Array Content ( array Of ( 1 0 , Ġ 9 , Ġ 8 ), Ġresult ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmulti Function Plus And Minus Special ised () Ġ{ ĊĠĠĠĠĠĠĠ Ġparse AP L Expression ("( internal : ensure Long Ġ 2 0 Ġ 2 1 Ġ 2 2 ) Ġ- Ġ( internal : ensure Long Ġ 0 Ġ 1 Ġ 2 ) Ġ+ Ġ( internal : ensure Long Ġ 1 0 Ġ 1 1 Ġ 1 2 ) "). let Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Dimension ( dimensions Of Size ( 3 ), Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Array Content ( array Of ( 1 0 , Ġ 9 , Ġ 8 ), Ġresult ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfail With Wrong Rank () Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < AP LE val Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparse AP L Expression ("( 2 Ġ 3 Ġâ į ´ Ġâ į ³ 6 ) Ġ+ [ 0 ] Ġ 2 Ġ 3 Ġ 4 Ġâ į ´ Ġâ į ³ 2 4 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Max () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġints ĊĠĠĠĠĠĠĠ Ġrun Max Test ( 2 , Ġ" â Į Ī ", Ġ" 1 ", Ġ" 2 ") ĊĠĠĠĠĠĠĠ Ġrun Max Test ( 0 , Ġ" â Į Ī ", Ġ" 0 ", Ġ" 0 ") ĊĠĠĠĠĠĠĠ Ġrun Max Test ( 1 , Ġ" â Į Ī ", Ġ" 1 ", Ġ" 0 ") ĊĠĠĠĠĠĠĠ Ġrun Max Test ( 2 , Ġ" â Į Ī ", Ġ" Â ¯ 1 0 ", Ġ" 2 ") ĊĠĠĠĠĠĠĠ Ġrun Max Test (- 1 0 , Ġ" â Į Ī ", Ġ" Â ¯ 1 0 ", Ġ" Â ¯ 2 0 ") ĊĠĠĠĠĠĠĠ Ġ// Ġdouble s ĊĠĠĠĠĠĠĠ Ġrun Max Test ( 2 . 0 , Ġ" â Į Ī ", Ġ" 1 . 0 ", Ġ" 2 . 0 ") ĊĠĠĠĠĠĠĠ Ġrun Max Test ( 0 . 0 , Ġ" â Į Ī ", Ġ" 0 . 0 ", Ġ" 0 . 0 ") ĊĠĠĠĠĠĠĠ Ġrun Max Test ( 1 . 0 , Ġ" â Į Ī ", Ġ" 1 . 0 ", Ġ" 0 . 0 ") ĊĠĠĠĠĠĠĠ Ġrun Max Test ( 2 . 0 , Ġ" â Į Ī ", Ġ" Â ¯ 1 0 . 0 ", Ġ" 2 . 0 ") ĊĠĠĠĠĠĠĠ Ġrun Max Test (- 1 0 . 0 , Ġ" â Į Ī ", Ġ" Â ¯ 1 0 . 0 ", Ġ" Â ¯ 2 0 . 0 ") ĊĠĠĠĠĠĠĠ Ġ// Ġcombination ĊĠĠĠĠĠĠĠ Ġrun Max Test ( 2 , Ġ" â Į Ī ", Ġ" 2 ", Ġ" 1 . 0 ") ĊĠĠĠĠĠĠĠ Ġrun Max Test ( 2 . 0 , Ġ" â Į Ī ", Ġ" 2 . 0 ", Ġ" Â ¯ 9 ") ĊĠĠĠĠĠĠĠ Ġrun Max Test ( 0 . 0 , Ġ" â Į Ī ", Ġ" 0 . 0 ", Ġ" Â ¯ 2 ") ĊĠĠĠĠĠĠĠ Ġrun Max Test ( 1 0 , Ġ" â Į Ī ", Ġ" 1 0 ", Ġ" 1 . 0 ") ĊĠĠĠĠĠĠĠ Ġ// Ġcomplex ĊĠĠĠĠĠĠĠ Ġrun Max Test ( Complex ( 2 . 0 , Ġ 3 . 0 ), Ġ" â Į Ī ", Ġ" 2 J 3 ", Ġ" 1 J 4 ") ĊĠĠĠĠĠĠĠ Ġrun Max Test ( Complex ( 4 . 0 , Ġ 6 . 0 ), Ġ" â Į Ī ", Ġ" 4 J 2 ", Ġ" 4 J 6 ") ĊĠĠĠĠĠĠĠ Ġ// Ġcharacters ĊĠĠĠĠĠĠĠ Ġparse AP L Expression ("@ a â Į Ī @ b "). let Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġresult . unwrap Deferred Value () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( v Ġis ĠA PL Char ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (' b '. code , Ġv . value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġparse AP L Expression ("@ C â Į Ī @ D "). let Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġresult . unwrap Deferred Value () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( v Ġis ĠA PL Char ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (' D '. code , Ġv . value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Min () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Max Test ( 1 , Ġ" â Į Ĭ ", Ġ" 1 ", Ġ" 2 ") ĊĠĠĠĠĠĠĠ Ġrun Max Test ( 0 , Ġ" â Į Ĭ ", Ġ" 0 ", Ġ" 0 ") ĊĠĠĠĠĠĠĠ Ġrun Max Test ( 0 , Ġ" â Į Ĭ ", Ġ" 1 ", Ġ" 0 ") ĊĠĠĠĠĠĠĠ Ġrun Max Test (- 1 0 , Ġ" â Į Ĭ ", Ġ" Â ¯ 1 0 ", Ġ" 2 ") ĊĠĠĠĠĠĠĠ Ġrun Max Test (- 2 0 , Ġ" â Į Ĭ ", Ġ" Â ¯ 1 0 ", Ġ" Â ¯ 2 0 ") ĊĊĠĠĠĠĠĠĠ Ġrun Max Test ( 1 . 0 , Ġ" â Į Ĭ ", Ġ" 1 . 0 ", Ġ" 2 . 0 ") ĊĠĠĠĠĠĠĠ Ġrun Max Test ( 0 . 0 , Ġ" â Į Ĭ ", Ġ" 0 . 0 ", Ġ" 0 . 0 ") ĊĠĠĠĠĠĠĠ Ġrun Max Test ( 0 . 0 , Ġ" â Į Ĭ ", Ġ" 1 . 0 ", Ġ" 0 . 0 ") ĊĠĠĠĠĠĠĠ Ġrun Max Test (- 1 0 . 0 , Ġ" â Į Ĭ ", Ġ" Â ¯ 1 0 . 0 ", Ġ" 2 . 0 ") ĊĠĠĠĠĠĠĠ Ġrun Max Test (- 2 0 . 0 , Ġ" â Į Ĭ ", Ġ" Â ¯ 1 0 . 0 ", Ġ" Â ¯ 2 0 . 0 ") ĊĊĠĠĠĠĠĠĠ Ġrun Max Test ( 1 . 0 , Ġ" â Į Ĭ ", Ġ" 2 ", Ġ" 1 . 0 ") ĊĠĠĠĠĠĠĠ Ġrun Max Test (- 9 , Ġ" â Į Ĭ ", Ġ" 2 . 0 ", Ġ" Â ¯ 9 ") ĊĠĠĠĠĠĠĠ Ġrun Max Test (- 2 , Ġ" â Į Ĭ ", Ġ" 0 . 0 ", Ġ" Â ¯ 2 ") ĊĠĠĠĠĠĠĠ Ġrun Max Test ( 1 . 0 , Ġ" â Į Ĭ ", Ġ" 1 0 ", Ġ" 1 . 0 ") ĊĊĠĠĠĠĠĠĠ Ġrun Max Test ( Complex ( 1 . 0 , Ġ 4 . 0 ), Ġ" â Į Ĭ ", Ġ" 2 J 3 ", Ġ" 1 J 4 ") ĊĠĠĠĠĠĠĠ Ġrun Max Test ( Complex ( 4 . 0 , Ġ 2 . 0 ), Ġ" â Į Ĭ ", Ġ" 4 J 2 ", Ġ" 4 J 6 ") ĊĊĠĠĠĠĠĠĠ Ġparse AP L Expression ("@ a â Į Ĭ @ b "). let Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġresult . unwrap Deferred Value () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( v Ġis ĠA PL Char ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (' a '. code , Ġv . value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġparse AP L Expression ("@ C â Į Ĭ @ D "). let Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġresult . unwrap Deferred Value () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( v Ġis ĠA PL Char ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (' C '. code , Ġv . value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmin Comp aring In compatible Types () Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < AP LE val Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparse AP L Expression ("@ a â Į Ī 1 "). collapse () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < AP LE val Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparse AP L Expression (" 1 â Į Ī @ a "). collapse () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < AP LE val Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparse AP L Expression ("@ a â Į Ĭ 1 "). collapse () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < AP LE val Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparse AP L Expression (" 1 â Į Ĭ @ a "). collapse () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Ce iling () Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Simple Double ( 2 . 0 , Ġparse AP L Expression (" â Į Ī 1 . 4 ")) ĊĠĠĠĠĠĠĠ Ġassert Simple Double ( 3 . 0 , Ġparse AP L Expression (" â Į Ī 2 . 9 ")) ĊĠĠĠĠĠĠĠ Ġassert Simple Double (- 3 . 0 , Ġparse AP L Expression (" â Į Ī Â ¯ 3 . 1 ")) ĊĠĠĠĠĠĠĠ Ġassert Simple Double ( 9 . 0 , Ġparse AP L Expression (" â Į Ī 9 ")) ĊĠĠĠĠĠĠĠ Ġassert Simple Complex ( Complex ( 4 . 0 , Ġ 6 . 0 ), Ġparse AP L Expression (" â Į Ī 4 . 1 J 5 . 2 ")) ĊĠĠĠĠĠĠĠ Ġassert Simple Complex ( Complex ( 9 1 . 0 , Ġ 2 . 0 ), Ġparse AP L Expression (" â Į Ī 9 0 . 8 J 1 . 9 ")) ĊĠĠĠĠĠĠĠ Ġassert Simple Complex ( Complex (- 1 . 0 , Ġ- 5 . 0 ), Ġparse AP L Expression (" â Į Ī Â ¯ 1 . 8 J Â ¯ 4 . 8 2 ")) ĊĠĠĠĠĠĠĠ Ġassert Simple Complex ( Complex (- 1 0 . 0 , Ġ- 4 0 . 0 ), Ġparse AP L Expression (" â Į Ī Â ¯ 1 0 . 1 J Â ¯ 4 0 . 1 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Floor () Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Simple Double ( 5 . 0 , Ġparse AP L Expression (" â Į Ĭ 5 . 9 ")) ĊĠĠĠĠĠĠĠ Ġassert Simple Double ( 3 . 0 , Ġparse AP L Expression (" â Į Ĭ 3 . 1 ")) ĊĠĠĠĠĠĠĠ Ġassert Simple Double (- 6 . 0 , Ġparse AP L Expression (" â Į Ĭ Â ¯ 5 . 1 ")) ĊĠĠĠĠĠĠĠ Ġassert Simple Double (- 9 . 0 , Ġparse AP L Expression (" â Į Ĭ Â ¯ 8 . 9 ")) ĊĠĠĠĠĠĠĠ Ġassert Simple Complex ( Complex ( 1 . 0 , Ġ 4 . 0 ), Ġparse AP L Expression (" â Į Ĭ 1 . 1 J 3 . 9 ")) ĊĠĠĠĠĠĠĠ Ġassert Simple Complex ( Complex ( 2 . 0 , Ġ 3 . 0 ), Ġparse AP L Expression (" â Į Ĭ 1 . 9 J 3 . 9 ")) ĊĠĠĠĠĠĠĠ Ġassert Simple Complex ( Complex (- 2 . 0 , Ġ- 7 . 0 ), Ġparse AP L Expression (" â Į Ĭ Â ¯ 1 . 3 J Â ¯ 7 . 0 ")) ĊĠĠĠĠĠĠĠ Ġassert Simple Complex ( Complex (- 4 . 0 , Ġ- 6 . 0 ), Ġparse AP L Expression (" â Į Ĭ - 4 . 1 J 5 . 2 ")) ĊĠĠĠĠĠĠĠ Ġassert Simple Complex ( Complex ( 1 . 0 , Ġ 9 . 0 ), Ġparse AP L Expression (" â Į Ĭ 1 . 0 1 J 9 . 9 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġce iling With Illegal Type () Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < AP LE val Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparse AP L Expression (" â Į Ī @ a "). collapse () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfail With Wrong Dimension () Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < AP LE val Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparse AP L Expression (" 1 Ġ 2 Ġ 3 Ġ 4 Ġ+ [ 0 ] Ġ 5 Ġ 6 Ġ 7 Ġâ į ´ Ġâ į ³ 2 4 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfloor With Illegal Type () Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < AP LE val Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparse AP L Expression (" â Į Ĭ @ x "). collapse () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĊĠĠĠ Ġfun Ġfail With Wrong Axis () Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < AP LE val Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparse AP L Expression (" 1 Ġ 2 Ġ 3 Ġ 4 Ġ+ [ 3 ] Ġ 5 Ġ 6 Ġ 7 Ġâ į ´ Ġâ į ³ 2 4 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfloor Con verts Complex ToDouble () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġparse AP L Expression (" â Į Ĭ 3 . 4 J 0 . 0 1 ") ĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġresult . unwrap Deferred Value () ĊĠĠĠĠĠĠĠ ĠassertTrue ( v Ġis ĠA PL Double , Ġ" expected ĠA PL Double , Ġactual Ġtype : Ġ${ v :: class . simple Name }") ĊĠĠĠĠĠĠĠ Ġassert Simple Double ( 3 . 0 , Ġv ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġscalar Function With En closed Arg () Ġ{ ĊĠĠĠĠĠĠĠ Ġparse AP L Expression ("( â Ĭ Ĥ 1 Ġ 2 Ġ 3 ) Ġ+ Ġ 1 0 Ġ 2 0 "). let Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Dimension ( dimensions Of Size ( 2 ), Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . value At ( 0 ). let Ġ{ Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Dimension ( dimensions Of Size ( 3 ), Ġv ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Array Content ( array Of ( 1 1 , Ġ 1 2 , Ġ 1 3 ), Ġv ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . value At ( 1 ). let Ġ{ Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Dimension ( dimensions Of Size ( 3 ), Ġv ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Array Content ( array Of ( 2 1 , Ġ 2 2 , Ġ 2 3 ), Ġv ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtwo Level Scalar Left Arg () Ġ{ ĊĠĠĠĠĠĠĠ Ġparse AP L Expression (" 1 Ġ+ Ġ 1 Ġ+ Ġ 2 Ġ 3 Ġâ į ´ Ġâ į ³ 6 "). let Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Dimension ( dimensions Of Size ( 2 , Ġ 3 ), Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Array Content ( array Of ( 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 , Ġ 7 ), Ġresult ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtwo Level Scalar Left Arg Generic () Ġ{ ĊĠĠĠĠĠĠĠ Ġparse AP L Expression (" 1 Ġ+ Ġ 1 Ġ+ Ġinternal : ensure Generic Ġ 2 Ġ 3 Ġâ į ´ Ġâ į ³ 6 "). let Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Dimension ( dimensions Of Size ( 2 , Ġ 3 ), Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Array Content ( array Of ( 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 , Ġ 7 ), Ġresult ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtwo Level En closed Array Left Arg () Ġ{ ĊĠĠĠĠĠĠĠ Ġparse AP L Expression (" 1 Ġ+ Ġ( â Ĭ Ĥ 1 Ġ 2 ) Ġ+ Ġ 2 Ġ 3 Ġâ į ´ Ġâ į ³ 6 "). let Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Dimension ( dimensions Of Size ( 2 , Ġ 3 ), Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġassert Element ( expected : ĠArray < Int >, Ġindex : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . value At ( index ). let Ġ{ Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Dimension ( dimensions Of Size ( expected . size ), Ġv ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Array Content ( expected , Ġv ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Element ( array Of ( 2 , Ġ 3 ), Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Element ( array Of ( 3 , Ġ 4 ), Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Element ( array Of ( 4 , Ġ 5 ), Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Element ( array Of ( 5 , Ġ 6 ), Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Element ( array Of ( 6 , Ġ 7 ), Ġ 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Element ( array Of ( 7 , Ġ 8 ), Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtwo Level En closed Array Left Arg Generic () Ġ{ ĊĠĠĠĠĠĠĠ Ġparse AP L Expression (" 1 Ġ+ Ġ( â Ĭ Ĥ 1 Ġ 2 ) Ġ+ Ġinternal : ensure Generic Ġ 2 Ġ 3 Ġâ į ´ Ġâ į ³ 6 "). let Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Dimension ( dimensions Of Size ( 2 , Ġ 3 ), Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġassert Element ( expected : ĠArray < Int >, Ġindex : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . value At ( index ). let Ġ{ Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Dimension ( dimensions Of Size ( expected . size ), Ġv ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Array Content ( expected , Ġv ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Element ( array Of ( 2 , Ġ 3 ), Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Element ( array Of ( 3 , Ġ 4 ), Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Element ( array Of ( 4 , Ġ 5 ), Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Element ( array Of ( 5 , Ġ 6 ), Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Element ( array Of ( 6 , Ġ 7 ), Ġ 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Element ( array Of ( 7 , Ġ 8 ), Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtwo Level En closed 0 () Ġ{ ĊĠĠĠĠĠĠĠ Ġparse AP L Expression (" 1 Ġ+ Ġ 1 Ġ+ ĠâĬ Ĥ 1 0 Ġ 1 1 "). let Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( result . is Scalar ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġresult . value At ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Dimension ( dimensions Of Size ( 2 ), Ġv ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Array Content ( array Of ( 1 2 , Ġ 1 3 ), Ġv ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtwo Level En closed 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġparse AP L Expression (" 1 Ġ+ Ġ 1 Ġ+ ĠâĬ Ĥ Ġinternal : ensure Generic Ġ 1 0 Ġ 1 1 "). let Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( result . is Scalar ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġresult . value At ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Dimension ( dimensions Of Size ( 2 ), Ġv ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Array Content ( array Of ( 1 2 , Ġ 1 3 ), Ġv ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġleft En closed Right Scalar () Ġ{ ĊĠĠĠĠĠĠĠ Ġparse AP L Expression ("( â Ĭ Ĥ 5 Ġ 6 ) Ġ+ Ġ 1 "). let Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( result . is Scalar ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġresult . value At ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Dimension ( dimensions Of Size ( 2 ), Ġv ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Array Content ( array Of ( 6 , Ġ 7 ), Ġv ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġleft En closed Right Scalar Generic () Ġ{ ĊĠĠĠĠĠĠĠ Ġparse AP L Expression ("( â Ĭ Ĥ Ġinternal : ensure Generic Ġ 5 Ġ 6 ) Ġ+ Ġ 1 "). let Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( result . is Scalar ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġresult . value At ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Dimension ( dimensions Of Size ( 2 ), Ġv ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Array Content ( array Of ( 6 , Ġ 7 ), Ġv ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġboth En closed () Ġ{ ĊĠĠĠĠĠĠĠ Ġparse AP L Expression ("( â Ĭ Ĥ 5 Ġ 6 ) Ġ+ Ġ( â Ĭ Ĥ 1 0 Ġ 1 1 ) "). let Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( result . is Scalar ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġresult . value At ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Dimension ( dimensions Of Size ( 2 ), Ġv ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Array Content ( array Of ( 1 5 , Ġ 1 7 ), Ġv ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġboth En closed Generic () Ġ{ ĊĠĠĠĠĠĠĠ Ġparse AP L Expression ("( â Ĭ Ĥ Ġinternal : ensure Generic Ġ 5 Ġ 6 ) Ġ+ Ġ( â Ĭ Ĥ Ġinternal : ensure Generic Ġ 1 0 Ġ 1 1 ) "). let Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( result . is Scalar ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġresult . value At ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Dimension ( dimensions Of Size ( 2 ), Ġv ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Array Content ( array Of ( 1 5 , Ġ 1 7 ), Ġv ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrun Max Test ( expected : ĠAny , Ġop : ĠString , Ġa : ĠString , Ġb : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġassert AP L Value ( expected , Ġparse AP L Expression ("${ a }${ op }${ b } ")) ĊĠĠĠĠĠĠĠ Ġassert AP L Value ( expected , Ġparse AP L Expression ("${ b }${ op }${ a } ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrun Scalar Test 1 Arg ( function Name : ĠString , Ġdouble Fn : Ġ( Double ) Ġ-> ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġparse AP L Expression ("${ function Name } ĠÂ ¯ 4 . 0 + â į ³ 1 0 ") ĊĠĠĠĠĠĠĠ Ġassert Dimension ( dimensions Of Size ( 1 0 ), Ġresult ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġresult . dimensions [ 0 ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdouble Fn (( i Ġ- Ġ 4 ). toDouble ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . value At ( i ). ensure Number (). as Double (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" function : Ġ${ function Name }, Ġarg : Ġ${ i Ġ- Ġ 4 }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrun Scalar Test ( function Name : ĠString , Ġdouble Fn : Ġ( Double , ĠDouble ) Ġ-> ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Scalar Test SD ( function Name , Ġdouble Fn ) ĊĠĠĠĠĠĠĠ Ġrun Scalar Test DS ( function Name , Ġdouble Fn ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrun Scalar Test SD ( function Name : ĠString , Ġdouble Fn : Ġ( Double , ĠDouble ) Ġ-> ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġparse AP L Expression (" 1 0 0 Ġ$ function Name Ġ 1 0 0 + 3 Ġ 4 Ġâ į ´ Ġâ į ³ 1 0 0 ") ĊĠĠĠĠĠĠĠ Ġassert Dimension ( dimensions Of Size ( 3 , Ġ 4 ), Ġresult ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġresult . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdouble Fn ( 1 0 0 . 0 , Ġ( 1 0 0 Ġ+ Ġi ). toDouble ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . value At ( i ). ensure Number (). as Double (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" function : Ġ${ function Name }}, Ġindex : Ġ${ i }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrun Scalar Test DS ( function Name : ĠString , Ġdouble Fn : Ġ( Double , ĠDouble ) Ġ-> ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġparse AP L Expression ("( 1 0 0 + 3 Ġ 4 Ġâ į ´ Ġâ į ³ 1 0 0 ) Ġ$ function Name Ġ 1 0 ") ĊĠĠĠĠĠĠĠ Ġassert Dimension ( dimensions Of Size ( 3 , Ġ 4 ), Ġresult ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġresult . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdouble Fn (( 1 0 0 Ġ+ Ġi ). toDouble (), Ġ 1 0 . 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . value At ( i ). ensure Number (). as Double (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" function : Ġ${ function Name }}. Ġindex : Ġ${ i }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ