package Ġabstract Inter pretation . concrete Inter pretation Ċ Ċ import Ġabstract Inter pretation . Double Like Ċ Ċ class ĠA Double ( val Ġvalue : ĠDouble ) Ġ: ĠDouble Like < AD o uble > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġnew ( d : ĠDouble ): ĠA Double Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠA Double ( d ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġinline Ġfun Ġpow ( exponent : ĠA Double ): ĠA Double Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠA Double ( Math . pow ( this . value , Ġexponent . value )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġinline Ġfun Ġpow ( exponent : ĠDouble ): ĠA Double Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠA Double ( Math . pow ( this . value , Ġexponent )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġinline Ġfun Ġlog (): ĠA Double Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠA Double ( Math . log ( value )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġinline Ġfun Ġminus ( that : ĠA Double ): ĠA Double Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠA Double ( value Ġ- Ġthat . value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġinline Ġfun Ġplus ( that : ĠA Double ): ĠA Double Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠA Double ( value Ġ+ Ġthat . value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtimes ( that : ĠA Double ): ĠA Double Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠA Double ( value Ġ* Ġthat . value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdiv ( that : ĠA Double ): ĠA Double Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠA Double ( value Ġ/ Ġthat . value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġminus ( value : ĠDouble ): ĠA Double Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠA Double ( this . value Ġ- Ġvalue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġplus ( value : ĠDouble ): ĠA Double Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠA Double ( this . value Ġ+ Ġvalue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtimes ( value : ĠDouble ): ĠA Double Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠA Double ( this . value Ġ* Ġvalue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdiv ( value : ĠDouble ): ĠA Double Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠA Double ( this . value Ġ/ Ġvalue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġunary Minus (): ĠA Double Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis Ġ* Ġ- 1 . 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ: ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue . toString () ĊĠĠĠ Ġ} Ċ } Ċ