package Ġmx . b ren nen . sher lock . res Ċ Ċ import Ġcom . cha quo . python . Python Ċ Ċ class ĠMath Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtolerance ( tolerance : ĠString ) Ġ: ĠDouble { ĊĊĠĠĠĠĠĠĠ Ġvar Ġpot ence : ĠDouble Ġ= Ġ 0 . toDouble () ĊĠĠĠĠĠĠĠ Ġval Ġnot acion Ġ= Ġtolerance . split ("\\ ^ ". to Regex ()). drop Last While Ġ{ Ġit . isEmpty () Ġ}. to Typed Array () ĊĠĠĠĠĠĠĠ Ġval Ġcaracteres Ġ= Ġnot acion [ 1 ]. toCharArray () ĊĠĠĠĠĠĠĠ Ġif Ġ( car acter es [ 0 ] Ġ== Ġ'-') Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġvalue Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 Ġuntil Ġcaracteres . size ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ+= Ġcaracteres [ i ]. toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpot ence Ġ= Ġ- value . toDouble () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĊ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġnot acion [ 1 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpot ence Ġ= Ġvalue . toDouble () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e Ġ: ĠException ){} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpot ence Ġ< Ġ 0 Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġvalor Ġ= Ġ 1 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ>= Ġpot ence ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalor Ġ/= Ġ 1 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi -- ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvalor ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpot ence Ġ> Ġ 0 Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġvalor Ġ= Ġ 1 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ<= Ġpot ence ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalor Ġ*= Ġ 1 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvalor ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġprintln (" La ĠT oler ancia Ġinsert ada Ġno Ġexiste Ġ/ Ġno Ġes Ġun Ġvalor ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 . 0 ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġevaluate ( function : ĠString , Ġvariable : ĠString , Ġvalue Ġ: ĠDouble ) Ġ: ĠDouble Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpy : ĠPython Ġ= ĠPython . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmath Functions Ġ= Ġpy . getModule (" Math Functions ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġmath Functions . call Attr (" Symbol ", Ġvariable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfunction Par ced Ġ= Ġmath Functions . call Attr (" sy mp ify ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfunction ). call Attr (" subs ", Ġx , value ) Ġto ĠDouble ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfunction 2 Ġ= Ġfunction Par ced . first . repr () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunction 2 . toDouble () ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e Ġ: Ġjava . lang . Exception ){ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġjava . lang . Double . NaN ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġderive ( function : ĠString , Ġrespect To Ġ: ĠString ) Ġ: ĠString Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtry { ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpy : ĠPython Ġ= ĠPython . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmath Functions Ġ= Ġpy . getModule (" Math Functions ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġmath Functions . call Attr (" Symbol ", Ġrespect To ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġderivative Ġ= Ġmath Functions . call Attr (" diff ", function , x ) Ġto ĠString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġderivative . first . repr () ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch ( e Ġ: ĠException ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsimplify ( function Ġ: ĠString ) Ġ: ĠString { ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtry { ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpy : ĠPython Ġ= ĠPython . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmath Functions Ġ= Ġpy . getModule (" Math Functions ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġderivative Ġ= Ġmath Functions . call Attr (" simplify ", function ) Ġto ĠString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexponent iation ( deriv ative . first . repr ()) ĊĊĠĠĠĠĠĠĠ Ġ} catch Ġ( e : ĠException ){ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunction ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġexponent iation ( function : ĠString ) Ġ: ĠString { ĊĊĠĠĠĠĠĠĠ Ġval Ġsplit ed Function Ġ= Ġfunction . split (" ** ") ĊĠĠĠĠĠĠĠ Ġvar Ġcorrect Function Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( part Ġin Ġsplit ed Function ){ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ== Ġsplit ed Function . size - 1 ){ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcorrect Function Ġ+= Ġpart ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcorrect Function Ġ+= Ġ"$ part ^ " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcorrect Function ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsolve ( function : ĠString , Ġvariable : ĠString ) Ġ: ĠString { ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtry { ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpy : ĠPython Ġ= ĠPython . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmath Functions Ġ= Ġpy . getModule (" Math Functions ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġmath Functions . call Attr (" Symbol ", Ġvariable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġderivative Ġ= Ġmath Functions . call Attr (" solve ", function , Ġx ) Ġto ĠString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfun 1 Ġ= Ġmath ml ( exponent iation ( deriv ative . first . repr ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun 1 [ 1 ] ĊĊĠĠĠĠĠĠĠ Ġ} catch Ġ( e : ĠException ){ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunction ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmath ml ( function : ĠString ) Ġ: ĠArrayList < String >{ ĊĊĠĠĠĠĠĠĠ Ġval Ġe cu ations Ġ: ĠArrayList < String > Ġ= ĠArrayList () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtry { ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpy : ĠPython Ġ= ĠPython . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmath Functions Ġ= Ġpy . getModule (" Math Functions ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfunction Sym Py Ġ= Ġmath Functions . call Attr (" sy mp ify ", Ġfunction ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmath ml Ġ= Ġmath Functions . call Attr (" latex ", function Sym Py ) Ġto ĠString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġrepr Ġ= Ġmath ml . first . repr () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcut ted Ġ= Ġrepr . split (" \\\\ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepr Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( part Ġin Ġcut ted ){ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ== Ġcut ted . size - 1 ){ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepr Ġ+= Ġpart ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepr Ġ+= Ġ"$ part \ \" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcut ted Ġ= Ġrepr . split ("' ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepr Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( part Ġin Ġcut ted ){ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepr Ġ+= Ġpart ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe cu ations . apply Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( 0 , function ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( 1 , repr ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e Ġ: ĠException ){ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġe cu ations ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Function ( function : ĠString , Ġvariable : ĠChar , Ġvalue Ġ: ĠDouble ) Ġ: ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// Hi brid acion ĠExit osa Ġcon ĠPython ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpy : ĠPython Ġ= ĠPython . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmath Functions Ġ= Ġpy . getModule (" Math Functions ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġmath Functions . call Attr (" Symbol ", Ġvariable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfunction Par ced Ġ= Ġmath Functions . call Attr (" sy mp ify ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfunction ). call Attr (" subs ", Ġx , value ) Ġto ĠString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunction Par ced . first . repr (). toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e Ġ: Ġjava . lang . Exception ){ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ } Ċ