package Ġj A ADD Ċ Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġorg . junit . jupiter . api . Assertions .* Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġjava . util .* ĊĊ Ċ class ĠAff ine Form Test Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠL arger Ġvalue ĊĠĠĠĠĠĠĠ Ġvar Ġterms Ġ= ĠHashMap < Int , ĠDouble >() ĊĠĠĠĠĠĠĠ Ġterms [ 1 ] Ġ= Ġ 2 . 0 ĊĠĠĠĠĠĠĠ Ġterms [ 2 ] Ġ= Ġ 1 . 0 ĊĠĠĠĠĠĠĠ Ġl gr Ġ= ĠAff ine Form ( Range . Reals , 1 0 . 0 , Ġ 0 . 0 , Ġterms ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠScalar Ġform ĊĠĠĠĠĠĠĠ Ġs cl Ġ= ĠAff ine Form ( 1 . 0 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠRe stricted Ġrange Ġthrough Ġmanual Ġmin / max Ġvalues ĊĠĠĠĠĠĠĠ Ġterms Ġ= ĠHashMap () ĊĠĠĠĠĠĠĠ Ġterms [ 2 ] Ġ= Ġ 0 . 5 ĊĠĠĠĠĠĠĠ Ġrst Ġ= ĠAff ine Form ( Range ( 1 . 1 , Ġ 1 . 9 ), Ġ 1 . 5 , Ġ 0 . 0 , Ġterms ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠA Ġreal Ġis Ġthe Ġrange Ġ+- MAX _ VALUE . ĠIt Ġis Ġidentified Ġby Ġis Real () Ġ*/ ĊĠĠĠ Ġ@ Test Ġfun Ġreal Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġreal Ġ= ĠAff ine Form ( Range . Kind . REAL S ) ĊĠĠĠĠĠĠĠ ĠassertEquals (- Double . MAX _ VALUE , Ġreal . min ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Double . MAX _ VALUE , Ġreal . max ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( real . is Reals ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġover loaded Operators () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= ĠAff ine Form ( 1 . 0 , Ġ 2 . 0 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġb Ġ= ĠAff ine Form ( 2 . 0 , Ġ 3 . 0 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġvar Ġy Ġ= Ġa Ġ- Ġb ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 0 , Ġy . radius , Ġ 0 . 0 0 0 0 0 1 ) ĊĊĠĠĠĠĠĠĠ Ġy Ġ= Ġa * b ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 . 0 , Ġy . min , Ġ 0 . 0 0 0 0 0 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 6 . 0 , Ġy . max , Ġ 0 . 0 0 0 0 0 1 ) ĊĊĠĠĠĠĠĠĠ Ġprintln (" y ="+ y ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Add Forms () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsum Ġ= Ġaf 1 Ġ+ Ġaf 2 ĊĠĠĠĠĠĠĠ Ġval Ġnoise Symbols Ġ= Ġsum . noise Var Keys ĊĠĠĠĠĠĠĠ Ġvar Ġterm Value Sum Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( v Ġin Ġsum . xi . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġterm Value Sum Ġ+= Ġv ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 . 0 , Ġsum . central , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 . 0 , Ġsum . min , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 4 . 0 , Ġsum . max , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 0 , Ġsum . r , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 . 0 , Ġsum . radius , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġnoise Symbols . size ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( noise Symbols . contains ( 1 )) ĊĠĠĠĠĠĠĠ ĠassertTrue ( noise Symbols . contains ( 2 )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( term Value Sum , Ġsum . radius , ĠPRECISION ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Add Forms Custom Range () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsum Ġ= Ġaf 1 Ġ+ Ġrst !! ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 . 0 , Ġsum . central , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 . 1 , Ġsum . min , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 . 9 , Ġsum . max , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 0 , Ġsum . r , ĠPRECISION ) ĊĠĠĠĠĠĠĠ Ġ// ĠDoes n 't Ġchange Ġwith Ġart ificial Ġrange ! ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 . 0 , Ġsum . radius , ĠPRECISION ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġpublic Ġvoid Ġtest Add Scalars () Ġ{ ĊĠĠĠĠĠĠĠ ĠAff ine Form Ġsum 1 Ġ= Ġaf 1 . scalar Add ( 1 . 0 ); ĊĠĠĠĠĠĠĠ ĠAff ine Form Ġsum 2 Ġ= Ġaf 1 . add ( scl ); ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 . 5 , Ġsum 1 . getC ent ral (), ĠPRECISION ); ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 . 0 , Ġsum 1 . getMin (), ĠPRECISION ); ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 . 0 , Ġsum 1 . getMax (), ĠPRECISION ); ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 0 , Ġsum 1 . getR (), ĠPRECISION ); ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 5 , Ġsum 1 . get Radius (), ĠPRECISION ); ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( sum 1 . getC ent ral (), Ġsum 2 . central ); ĊĠĠĠ Ġ}*/ ĊĊĠĠĠ Ġ/** ĠAdding Ġsomething Ġto Ġinfinity Ġresults Ġin Ġinfinity Ġ*/ ĊĠĠĠ Ġ@ Test Ġfun Ġtest Add Infinite () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaf 3 Ġ= ĠAff ine Form ( Double . POSITIVE _ INFINITY ) ĊĠĠĠĠĠĠĠ Ġval Ġsum 1 Ġ= Ġaf 3 Ġ+ Ġaf 1 ĊĠĠĠĠĠĠĠ Ġval Ġsum 2 Ġ= Ġaf 1 Ġ+ Ġaf 3 ĊĠĠĠĠĠĠĠ ĠassertTrue ( af 3 . is Reals NaN ()) ĊĠĠĠĠĠĠĠ ĠassertTrue ( sum 1 . is Reals NaN ()) ĊĠĠĠĠĠĠĠ ĠassertTrue ( sum 2 . is Reals NaN ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( sum 1 , Ġsum 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Add NaN () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaf 3 Ġ= ĠAff ine Form ( Double . NaN ) ĊĠĠĠĠĠĠĠ Ġval Ġsum 1 Ġ= Ġaf 3 Ġ+ Ġaf 1 ĊĠĠĠĠĠĠĠ Ġval Ġsum 2 Ġ= Ġaf 1 Ġ+ Ġaf 3 ĊĠĠĠĠĠĠĠ ĠassertTrue ( af 3 . is Reals NaN ()) ĊĠĠĠĠĠĠĠ ĠassertTrue ( sum 1 . is Reals NaN ()) ĊĠĠĠĠĠĠĠ ĠassertTrue ( sum 2 . is Reals NaN ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( sum 1 , Ġsum 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Neg ation () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġneg : ĠAff ine Form Ġ= Ġ- af 1 ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 . 5 , Ġneg . central , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 2 . 0 , Ġneg . min , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 . 0 , Ġneg . max , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 0 , Ġneg . r , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 5 , Ġneg . radius , ĠPRECISION ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Multip lication () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġterms 2 Ġ= Ġhash Map Of ( 1 Ġto Ġ- 2 . 0 , Ġ 3 Ġto Ġ 1 . 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġaf 3 Ġ= ĠAff ine Form ( Range . Reals , 1 0 . 0 , Ġ 0 . 0 , Ġterms 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġmult : ĠAff ine Form Ġ= Ġl gr !!. times ( af 3 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mult . is Ranges ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 0 0 . 0 , Ġmult . central , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 7 1 . 0 , Ġmult . min , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 2 9 . 0 , Ġmult . max , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 9 . 0 , Ġmult . r , ĠPRECISION ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Exp () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTest Ġscalar ĊĠĠĠĠĠĠĠ Ġval Ġaf 3 Ġ= ĠAff ine Form ( 3 . 5 ) ĊĠĠĠĠĠĠĠ Ġval Ġaf 4 Ġ= ĠAff ine Form (- 1 . 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġexp 1 Ġ= Ġs cl !!. exp () ĊĠĠĠĠĠĠĠ Ġval Ġexp 2 Ġ= Ġaf 3 . exp () ĊĠĠĠĠĠĠĠ Ġval Ġexp 3 Ġ= Ġaf 4 . exp () ĊĠĠĠĠĠĠĠ ĠassertEquals ( Math . E , Ġexp 1 . central , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Math . exp ( 3 . 5 ), Ġexp 2 . central , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Math . exp (- 1 . 0 ), Ġexp 3 . central , ĠPRECISION ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTest Ġinterval ĊĠĠĠĠĠĠĠ Ġval Ġexp 4 Ġ= Ġaf 1 . exp () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 5 . 0 6 , Ġexp 4 . central , Ġ 0 . 0 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 9 8 , Ġexp 4 . r , Ġ 0 . 0 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 . 7 2 , Ġexp 4 . min , Ġ 0 . 0 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 7 . 3 9 , Ġexp 4 . max , Ġ 0 . 0 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġexp 5 Ġ= Ġl gr !!. exp () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 2 1 7 5 5 . 0 , Ġexp 5 . central , Ġ 1 . 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 1 7 3 6 8 . 0 , Ġexp 5 . r , Ġ 1 . 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 0 9 7 . 0 , Ġexp 5 . min , Ġ 1 . 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 4 4 2 4 1 3 . 0 , Ġexp 5 . max , Ġ 1 . 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Log () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlog 1 Ġ= Ġaf 1 . log () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 3 8 , Ġlog 1 . central , Ġ 0 . 0 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 0 2 , Ġlog 1 . r , Ġ 0 . 0 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 0 , Ġlog 1 . min , Ġ 0 . 0 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 7 5 , Ġlog 1 . max , Ġ 0 . 0 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġlog 2 Ġ= Ġl gr !!. log () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 . 2 8 , Ġlog 2 . central , Ġ 0 . 0 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 0 2 , Ġlog 2 . r , Ġ 0 . 0 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 . 9 5 , Ġlog 2 . min , Ġ 0 . 0 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 . 6 1 , Ġlog 2 . max , Ġ 0 . 0 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġlog 3 Ġ= Ġrst !!. log () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 3 9 , Ġlog 3 . central , Ġ 0 . 0 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 0 2 , Ġlog 3 . r , Ġ 0 . 0 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 0 9 , Ġlog 3 . min , Ġ 0 . 0 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 6 8 , Ġlog 3 . max , Ġ 0 . 0 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Sqrt () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsqrt 1 Ġ= Ġaf 1 . sqrt () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 . 2 3 , Ġsqrt 1 . central , Ġ 0 . 0 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 0 5 , Ġsqrt 1 . r , Ġ 0 . 0 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 . 0 , Ġsqrt 1 . min , Ġ 0 . 0 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 . 4 5 , Ġsqrt 1 . max , Ġ 0 . 0 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġsqrt 2 Ġ= Ġl gr !!. sqrt () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 . 1 7 , Ġsqrt 2 . central , Ġ 0 . 0 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 1 1 , Ġsqrt 2 . r , Ġ 0 . 0 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 . 6 5 , Ġsqrt 2 . min , Ġ 0 . 0 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 . 6 9 , Ġsqrt 2 . max , Ġ 0 . 0 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġsqrt 3 Ġ= Ġrst !!. sqrt () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 . 2 3 , Ġsqrt 3 . central , Ġ 0 . 0 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 0 4 , Ġsqrt 3 . r , Ġ 0 . 0 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 . 0 5 , Ġsqrt 3 . min , Ġ 0 . 0 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 . 4 0 , Ġsqrt 3 . max , Ġ 0 . 0 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠIn verse Ġof Ġrange , Ġincluding Ġ 1 / 0 Ġand Ġ 1 /( inf Ġ... Ġinf ) Ġ*/ ĊĠĠĠ Ġ@ Test Ġfun Ġtest Inv () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠA round Ġzero ĊĠĠĠĠĠĠĠ Ġval Ġaf 3 Ġ= ĠAff ine Form (- 2 . 0 , Ġ 2 . 0 , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġinv Ġ= Ġaf 3 . inv () ĊĠĠĠĠĠĠĠ ĠassertTrue ( inv . is Reals NaN ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠInfinity Ġshould Ġbe Ġpreserved ĊĠĠĠĠĠĠĠ Ġval Ġinf Ġ= ĠAff ine Form ( Double . NEGATIVE _ INFINITY , ĠDouble . POSITIVE _ INFINITY , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġinv 2 Ġ= Ġinf . inv () ĊĠĠĠĠĠĠĠ ĠassertTrue ( inv 2 . is Reals NaN ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠRegular ĊĠĠĠĠĠĠĠ Ġval Ġinv 3 Ġ= Ġaf 1 . inv () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 7 5 , Ġinv 3 . central , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 5 , Ġinv 3 . min , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 . 0 , Ġinv 3 . max , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 1 2 5 , Ġinv 3 . r , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 1 2 5 , Ġinv 3 . radius , ĠPRECISION ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Div () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠDiv Ġby Ġzero Ġshould Ġreturn Ġinfinity Ġor Ġre als ĊĠĠĠĠĠĠĠ Ġ// ĠRegular Ġdivision Ġis Ġtested Ġby Ġin version Ġ+ Ġmultiplication ĊĠĠĠĠĠĠĠ Ġval Ġzero Ġ= ĠAff ine Form ( 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġdiv Ġ= Ġaf 1 Ġ/ Ġzero ĊĠĠĠĠĠĠĠ ĠassertTrue ( div . is Reals NaN ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest S qr () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmult 1 Ġ= Ġaf 1 Ġ* Ġaf 1 ĊĠĠĠĠĠĠĠ Ġval Ġsq r 1 Ġ= Ġaf 1 . sqr () ĊĠĠĠĠĠĠĠ Ġval Ġmult 2 Ġ= Ġl gr !! Ġ* Ġl gr !! ĊĠĠĠĠĠĠĠ Ġval Ġsq r 2 Ġ= Ġl gr !!. sqr () ĊĠĠĠĠĠĠĠ Ġval Ġmult 3 Ġ= Ġrst !! Ġ* Ġrst !! ĊĠĠĠĠĠĠĠ Ġval Ġsq r 3 Ġ= Ġrst !!. sqr () ĊĠĠĠĠĠĠĠ ĠassertEquals ( mult 1 , Ġsq r 1 ) Ġ// Ġsmall Ġinterval ĊĠĠĠĠĠĠĠ ĠassertEquals ( mult 2 , Ġsq r 2 ) Ġ// Ġlarger , Ġmultiple Ġsymbols ĊĠĠĠĠĠĠĠ ĠassertEquals ( mult 3 , Ġsq r 3 ) Ġ// Ġart ific ially Ġrestricted Ġbounds ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Creation () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( af 1 . central , Ġaf 2 . central , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( af 1 . min , Ġaf 2 . min , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( af 1 . max , Ġaf 2 . max , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( af 1 . r , Ġaf 2 . r , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( af 1 . radius , Ġaf 2 . radius , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 . 5 , Ġaf 2 . central , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 . 0 , Ġaf 2 . min , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 . 0 , Ġaf 2 . max , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 0 , Ġaf 2 . r , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 5 , Ġaf 2 . radius , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 . 0 , Ġs cl !!. central , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( scl !!. min , Ġs cl !!. max , ĠPRECISION ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . 0 , Ġs cl !!. radius , ĠPRECISION ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Equality () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaf 3 Ġ= ĠAff ine Form ( 1 . 0 , Ġ 2 . 0 , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġaf 4 Ġ= Ġaf 2 . clone () Ġas ĠAff ine Form ĊĠĠĠĠĠĠĠ ĠassertFalse ( af 1 . equals ( af 2 )) ĊĠĠĠĠĠĠĠ ĠassertTrue ( af 3 . equals ( af 2 )) ĊĠĠĠĠĠĠĠ ĠassertTrue ( af 4 . equals ( af 2 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Around Zero () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaf 3 Ġ= ĠAff ine Form (- 1 . 0 , Ġ 2 . 0 , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġaf 4 Ġ= ĠAff ine Form ( 0 . 0 , Ġ 2 . 0 , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġaf 5 Ġ= ĠAff ine Form ( 0 . 0 0 0 0 0 0 1 , Ġ 2 . 0 , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġaf 6 Ġ= ĠAff ine Form (- 2 . 0 , Ġ 0 . 0 , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġaf 7 Ġ= ĠAff ine Form (- 2 . 0 , Ġ- 0 . 0 0 0 0 0 0 1 , Ġ- 1 ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( af 3 . is Weak ly Positive ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( af 3 . is Weak ly Negative ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( af 4 . is Weak ly Positive ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( af 4 . is Strict ly Positive ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( af 4 . is Weak ly Negative ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( af 5 . is Weak ly Positive ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( af 5 . is Strict ly Positive ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( af 5 . is Weak ly Negative ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( af 6 . is Weak ly Negative ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( af 6 . is Strict ly Negative ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( af 6 . is Weak ly Positive ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( af 7 . is Weak ly Negative ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( af 7 . is Strict ly Negative ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( af 7 . is Weak ly Positive ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ get : Test ĊĠĠĠ Ġval Ġis Similar Test : ĠUnit ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa Ġ= ĠAff ine Form ( 1 . 0 , Ġ 2 . 0 , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġb : ĠAff ine Form ? Ġ= ĠAff ine Form ( 1 . 0 , Ġ 2 . 0 , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( a . is Similar ( b !! , Ġ 0 . 0 0 0 0 0 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb Ġ= ĠAff ine Form ( 1 . 0 , Ġ 2 . 0 , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( a . is Similar ( b , Ġ 0 . 0 0 0 0 0 1 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġjoin Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= ĠAff ine Form ( 1 . 0 , Ġ 2 . 0 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġvar Ġb : ĠAff ine Form ? Ġ= ĠAff ine Form ( 2 . 0 , Ġ 3 . 0 , Ġ 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 . 0 , Ġa . join ( b !! ). central ) ĊĠĠĠĠĠĠĠ Ġb Ġ= ĠAff ine Form ( 2 . 0 , Ġ 3 . 0 , Ġ 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 . 0 , Ġa . join ( b ). central ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Infinite Term () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġterms Ġ= ĠHashMap < Int , ĠDouble >() ĊĠĠĠĠĠĠĠ Ġterms [ 1 ] Ġ= ĠDouble . POSITIVE _ INFINITY ĊĠĠĠĠĠĠĠ Ġval Ġaf 3 Ġ= ĠAff ine Form ( Range . Reals , Ġ 0 . 0 , Ġ 0 . 0 , Ġterms ) ĊĠĠĠĠĠĠĠ Ġprintln (" a 3 =$ af 3 ") ĊĠĠĠĠĠĠĠ ĠassertTrue ( af 3 . is Reals NaN ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġjson Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsum Ġ= Ġaf 1 Ġ+ Ġaf 2 ĊĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson Builder (). set Pretty Print ing (). create () ĊĊĠĠĠĠĠĠĠ Ġ// ĠGson Ġgson Ġ= Ġnew ĠGson (); ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġgson . toJson ( sum ) ĊĠĠĠĠĠĠĠ Ġprintln (" JSON Ġstring Ġof Ġaf 1 + af 2 : Ġ$ json ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠPRECISION Ġ= Ġ 0 . 0 0 0 0 0 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġaf 1 Ġ= ĠAff ine Form ( 1 . 0 , Ġ 2 . 0 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġaf 2 Ġ= ĠAff ine Form ( 1 . 0 , Ġ 2 . 0 , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġs cl : ĠAff ine Form ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġl gr : ĠAff ine Form ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġrst : ĠAff ine Form ? Ġ= Ġnull ĊĠĠĠ Ġ} Ċ }