package Ġcom . tem ob ard . equ ations olver . sol vers Ċ Ċ import Ġkotlin . math .* Ċ Ċ sealed Ġclass ĠExpression Ġ{ ĊĊĠĠĠ Ġfun Ġsolve () Ġ: ĠDouble Ġ= Ġwhen ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠAdd Ġ-> Ġleft Ġ+ Ġright ĊĠĠĠĠĠĠĠ Ġis ĠSubtract Ġ-> Ġleft Ġ- Ġright ĊĠĠĠĠĠĠĠ Ġis ĠMultiply Ġ-> Ġleft Ġ* Ġright ĊĠĠĠĠĠĠĠ Ġis ĠDiv ide Ġ-> Ġleft Ġ/ Ġright ĊĊĠĠĠĠĠĠĠ Ġis ĠPower Ġ-> Ġleft . pow ( right ) ĊĠĠĠĠĠĠĠ Ġis ĠS qrt Ġ-> Ġsqrt ( value ) ĊĠĠĠĠĠĠĠ Ġis ĠExp onent Ġ-> Ġexp ( value ) ĊĠĠĠĠĠĠĠ Ġis ĠLog arith m Ġ-> Ġlog ( left , Ġright ) ĊĠĠĠĠĠĠĠ Ġis ĠLog Natural Ġ-> Ġln ( value ) ĊĠĠĠĠĠĠĠ Ġis ĠLog 1 0 Ġ-> Ġlog 1 0 ( value ) ĊĠĠĠĠĠĠĠ Ġis ĠLog 2 Ġ-> Ġlog 2 ( value ) ĊĊĠĠĠĠĠĠĠ Ġis ĠSin Ġ-> Ġsin ( value ) ĊĠĠĠĠĠĠĠ Ġis ĠCos Ġ-> Ġcos ( value ) ĊĠĠĠĠĠĠĠ Ġis ĠT an Ġ-> Ġtan ( value ) ĊĠĠĠĠĠĠĠ Ġis ĠC ot Ġ-> Ġ 1 . 0 Ġ/ Ġtan ( value ) ĊĠĠĠĠĠĠĠ Ġis ĠSec Ġ-> ĠTODO () ĊĠĠĠĠĠĠĠ Ġis ĠC sc Ġ-> ĠTODO () ĊĠĠĠĠĠĠĠ Ġis ĠAs in Ġ-> Ġas in ( value ) ĊĠĠĠĠĠĠĠ Ġis ĠAs inh Ġ-> Ġas inh ( value ) ĊĠĠĠĠĠĠĠ Ġis ĠA cos Ġ-> Ġa cos ( value ) ĊĠĠĠĠĠĠĠ Ġis ĠA co sh Ġ-> Ġa co sh ( value ) ĊĠĠĠĠĠĠĠ Ġis ĠAt an Ġ-> Ġatan ( value ) ĊĠĠĠĠĠĠĠ Ġis ĠAt anh Ġ-> Ġat anh ( value ) ĊĊĠĠĠĠĠĠĠ Ġis ĠAbs Ġ-> Ġabs ( value ) ĊĠĠĠĠĠĠĠ Ġis ĠMax Ġ-> Ġmax ( left , Ġright ) ĊĠĠĠĠĠĠĠ Ġis ĠMin Ġ-> Ġmin ( left , Ġright ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Basic Ġfunctions ĊĠĠĠ Ġclass ĠAdd ( val Ġleft : ĠDouble , Ġval Ġright : ĠDouble ) Ġ: ĠExpression () ĊĠĠĠ Ġclass ĠSubtract ( val Ġleft : ĠDouble , Ġval Ġright : ĠDouble ) Ġ: ĠExpression () ĊĠĠĠ Ġclass ĠMultiply ( val Ġleft : ĠDouble , Ġval Ġright : ĠDouble ) Ġ: ĠExpression () ĊĠĠĠ Ġclass ĠDiv ide ( val Ġleft : ĠDouble , Ġval Ġright : ĠDouble ) Ġ: ĠExpression () ĊĊĠĠĠ Ġ// Exponent ial Ġfunctions ĊĠĠĠ Ġclass ĠPower ( val Ġleft : ĠDouble , Ġval Ġright : ĠDouble ) Ġ: ĠExpression () ĊĠĠĠ Ġclass ĠS qrt ( val Ġvalue : ĠDouble ) Ġ: ĠExpression () ĊĠĠĠ Ġclass ĠExp onent ( val Ġvalue : ĠDouble ) Ġ: ĠExpression () ĊĠĠĠ Ġclass ĠLog arith m ( val Ġleft : ĠDouble , Ġval Ġright : ĠDouble ) Ġ: ĠExpression () ĊĠĠĠ Ġclass ĠLog Natural ( val Ġvalue : ĠDouble ) Ġ: ĠExpression () ĊĠĠĠ Ġclass ĠLog 1 0 ( val Ġvalue : ĠDouble ) Ġ: ĠExpression () ĊĠĠĠ Ġclass ĠLog 2 ( val Ġvalue : ĠDouble ) Ġ: ĠExpression () ĊĊĠĠĠ Ġ// Trig on ometric Ġfunctions ĊĠĠĠ Ġclass ĠSin ( val Ġvalue : ĠDouble ) Ġ: ĠExpression () ĊĠĠĠ Ġclass ĠCos ( val Ġvalue : ĠDouble ) Ġ: ĠExpression () ĊĠĠĠ Ġclass ĠT an ( val Ġvalue : ĠDouble ) Ġ: ĠExpression () ĊĠĠĠ Ġclass ĠC ot ( val Ġvalue : ĠDouble ) Ġ: ĠExpression () ĊĠĠĠ Ġclass ĠSec ( val Ġvalue : ĠDouble ) Ġ: ĠExpression () ĊĠĠĠ Ġclass ĠC sc ( val Ġvalue : ĠDouble ) Ġ: ĠExpression () ĊĠĠĠ Ġclass ĠAs in ( val Ġvalue : ĠDouble ) Ġ: ĠExpression () ĊĠĠĠ Ġclass ĠAs inh ( val Ġvalue : ĠDouble ) Ġ: ĠExpression () ĊĠĠĠ Ġclass ĠA cos ( val Ġvalue : ĠDouble ) Ġ: ĠExpression () ĊĠĠĠ Ġclass ĠA co sh ( val Ġvalue : ĠDouble ) Ġ: ĠExpression () ĊĠĠĠ Ġclass ĠAt an ( val Ġvalue : ĠDouble ) Ġ: ĠExpression () ĊĠĠĠ Ġclass ĠAt anh ( val Ġvalue : ĠDouble ) Ġ: ĠExpression () ĊĊĠĠĠ Ġclass ĠAbs ( val Ġvalue : ĠDouble ) Ġ: ĠExpression () ĊĠĠĠ Ġclass ĠMax ( val Ġleft : ĠDouble , Ġval Ġright : ĠDouble ) Ġ: ĠExpression () ĊĠĠĠ Ġclass ĠMin ( val Ġleft : ĠDouble , Ġval Ġright : ĠDouble ) Ġ: ĠExpression () Ċ }