Upgrade AutoDiff support of trigonometric ops, also fix some problems with MstAlgebra #140
@ -38,7 +38,9 @@ object MstSpace : Space<MST>, NumericAlgebra<MST> {
|
|||||||
* [Ring] over [MST] nodes.
|
* [Ring] over [MST] nodes.
|
||||||
*/
|
*/
|
||||||
object MstRing : Ring<MST>, NumericAlgebra<MST> {
|
object MstRing : Ring<MST>, NumericAlgebra<MST> {
|
||||||
override val zero: MST = number(0.0)
|
override val zero: MST
|
||||||
|
get() = MstSpace.zero
|
||||||
|
|
||||||
override val one: MST = number(1.0)
|
override val one: MST = number(1.0)
|
||||||
|
|
||||||
override fun number(value: Number): MST = MstSpace.number(value)
|
override fun number(value: Number): MST = MstSpace.number(value)
|
||||||
@ -59,8 +61,11 @@ object MstRing : Ring<MST>, NumericAlgebra<MST> {
|
|||||||
* [Field] over [MST] nodes.
|
* [Field] over [MST] nodes.
|
||||||
*/
|
*/
|
||||||
object MstField : Field<MST> {
|
object MstField : Field<MST> {
|
||||||
override val zero: MST = number(0.0)
|
override val zero: MST
|
||||||
override val one: MST = number(1.0)
|
get() = MstRing.zero
|
||||||
|
|
||||||
|
override val one: MST
|
||||||
|
get() = MstRing.one
|
||||||
|
|
||||||
override fun symbol(value: String): MST = MstRing.symbol(value)
|
override fun symbol(value: String): MST = MstRing.symbol(value)
|
||||||
override fun number(value: Number): MST = MstRing.number(value)
|
override fun number(value: Number): MST = MstRing.number(value)
|
||||||
@ -79,14 +84,25 @@ object MstField : Field<MST> {
|
|||||||
* [ExtendedField] over [MST] nodes.
|
* [ExtendedField] over [MST] nodes.
|
||||||
*/
|
*/
|
||||||
object MstExtendedField : ExtendedField<MST> {
|
object MstExtendedField : ExtendedField<MST> {
|
||||||
override val zero: MST = number(0.0)
|
override val zero: MST
|
||||||
override val one: MST = number(1.0)
|
get() = MstField.zero
|
||||||
|
|
||||||
|
override val one: MST
|
||||||
|
get() = MstField.one
|
||||||
|
|
||||||
|
override fun symbol(value: String): MST = MstField.symbol(value)
|
||||||
override fun sin(arg: MST): MST = unaryOperation(TrigonometricOperations.SIN_OPERATION, arg)
|
override fun sin(arg: MST): MST = unaryOperation(TrigonometricOperations.SIN_OPERATION, arg)
|
||||||
override fun cos(arg: MST): MST = unaryOperation(TrigonometricOperations.COS_OPERATION, arg)
|
override fun cos(arg: MST): MST = unaryOperation(TrigonometricOperations.COS_OPERATION, arg)
|
||||||
|
override fun tan(arg: MST): MST = unaryOperation(TrigonometricOperations.TAN_OPERATION, arg)
|
||||||
override fun asin(arg: MST): MST = unaryOperation(TrigonometricOperations.ASIN_OPERATION, arg)
|
override fun asin(arg: MST): MST = unaryOperation(TrigonometricOperations.ASIN_OPERATION, arg)
|
||||||
override fun acos(arg: MST): MST = unaryOperation(TrigonometricOperations.ACOS_OPERATION, arg)
|
override fun acos(arg: MST): MST = unaryOperation(TrigonometricOperations.ACOS_OPERATION, arg)
|
||||||
override fun atan(arg: MST): MST = unaryOperation(TrigonometricOperations.ATAN_OPERATION, arg)
|
override fun atan(arg: MST): MST = unaryOperation(TrigonometricOperations.ATAN_OPERATION, arg)
|
||||||
|
override fun sinh(arg: MST): MST = unaryOperation(HyperbolicOperations.SINH_OPERATION, arg)
|
||||||
|
override fun cosh(arg: MST): MST = unaryOperation(HyperbolicOperations.COSH_OPERATION, arg)
|
||||||
|
override fun tanh(arg: MST): MST = unaryOperation(HyperbolicOperations.TANH_OPERATION, arg)
|
||||||
|
override fun asinh(arg: MST): MST = unaryOperation(HyperbolicOperations.ASINH_OPERATION, arg)
|
||||||
|
override fun acosh(arg: MST): MST = unaryOperation(HyperbolicOperations.ACOSH_OPERATION, arg)
|
||||||
|
override fun atanh(arg: MST): MST = unaryOperation(HyperbolicOperations.ATANH_OPERATION, arg)
|
||||||
override fun add(a: MST, b: MST): MST = MstField.add(a, b)
|
override fun add(a: MST, b: MST): MST = MstField.add(a, b)
|
||||||
override fun multiply(a: MST, k: Number): MST = MstField.multiply(a, k)
|
override fun multiply(a: MST, k: Number): MST = MstField.multiply(a, k)
|
||||||
override fun multiply(a: MST, b: MST): MST = MstField.multiply(a, b)
|
override fun multiply(a: MST, b: MST): MST = MstField.multiply(a, b)
|
||||||
|
Loading…
Reference in New Issue
Block a user