|
@@ -67,7 +67,7 @@ While the [[id:f3e3cdb9-a661-4598-8be1-e15f587f35bb][Introduction]] describes th
|
|
|
#+TOC: headlines 3
|
|
|
#+TOC: listings
|
|
|
|
|
|
-* WORKING Expression Types [2/4]
|
|
|
+* WORKING Expression Types [3/4]
|
|
|
:PROPERTIES:
|
|
|
:ID: fe611e8f-db42-4fe0-8e77-9cfb55d2227c
|
|
|
:END:
|
|
@@ -273,7 +273,7 @@ Equality of constants is a bit different, and is checked as follows:
|
|
|
(slot-value expression-b 'value)))
|
|
|
#+END_SRC
|
|
|
|
|
|
-** WORKING Compound Types [6/7]
|
|
|
+** DONE Compound Types [7/7]
|
|
|
:PROPERTIES:
|
|
|
:ID: a0d2eb19-8a1e-4dee-9b41-c454a49cacc4
|
|
|
:END:
|
|
@@ -472,7 +472,104 @@ CLOSED: [2019-01-05 Sat 15:47]
|
|
|
(log-of expression-b))))
|
|
|
#+END_SRC
|
|
|
|
|
|
-*** TODO Trigonometric
|
|
|
+*** DONE Trigonometric
|
|
|
+CLOSED: [2019-01-16 Wed 15:41]
|
|
|
+
|
|
|
+Trigonemtric functions are also a bit weird -- as given a "normal" trig function, /e.g.,/ $\sin{\theta}$, there's the normal, the inverse, the hyperbolic, and the hyperbolic inverse. As such, we have a superclass for each, and then equality, which checks type and ~eqal~-ness of the inner expression.
|
|
|
+
|
|
|
+#+Caption: Trig Bases
|
|
|
+#+Name: type-trigs
|
|
|
+#+BEGIN_SRC lisp
|
|
|
+ @export
|
|
|
+ (defclass <trig> (<expression>)
|
|
|
+ ((expression :reader expression
|
|
|
+ :initarg :expression
|
|
|
+ :type <expression>)))
|
|
|
+
|
|
|
+ @export
|
|
|
+ (defclass <inverse-trig> (<trig>) ())
|
|
|
+
|
|
|
+ @export
|
|
|
+ (defclass <hyperbolic-trig> (<trig>) ())
|
|
|
+
|
|
|
+ (defmethod eqal ((expression-a <trig>) (expression-b <trig>))
|
|
|
+ (and (equalp (type-of expression-a)
|
|
|
+ (type-of expression-b))
|
|
|
+ (eqal (expression expression-a)
|
|
|
+ (expression expression-b))))
|
|
|
+
|
|
|
+ @export
|
|
|
+ (defclass <sin> (<trig>) ())
|
|
|
+
|
|
|
+ @export
|
|
|
+ (defclass <cos> (<trig>) ())
|
|
|
+
|
|
|
+ @export
|
|
|
+ (defclass <tan> (<trig>) ())
|
|
|
+
|
|
|
+ @export
|
|
|
+ (defclass <csc> (<trig>) ())
|
|
|
+
|
|
|
+ @export
|
|
|
+ (defclass <sec> (<trig>) ())
|
|
|
+
|
|
|
+ @export
|
|
|
+ (defclass <cot> (<trig>) ())
|
|
|
+
|
|
|
+ @export
|
|
|
+ (defclass <asin> (<inverse-trig>) ())
|
|
|
+
|
|
|
+ @export
|
|
|
+ (defclass <acos> (<inverse-trig>) ())
|
|
|
+
|
|
|
+ @export
|
|
|
+ (defclass <atan> (<inverse-trig>) ())
|
|
|
+
|
|
|
+ @export
|
|
|
+ (defclass <acsc> (<inverse-trig>) ())
|
|
|
+
|
|
|
+ @export
|
|
|
+ (defclass <asec> (<inverse-trig>) ())
|
|
|
+
|
|
|
+ @export
|
|
|
+ (defclass <acot> (<inverse-trig>) ())
|
|
|
+
|
|
|
+ @export
|
|
|
+ (defclass <sinh> (<hyperbolic-trig>) ())
|
|
|
+
|
|
|
+ @export
|
|
|
+ (defclass <cosh> (<hyperbolic-trig>) ())
|
|
|
+
|
|
|
+ @export
|
|
|
+ (defclass <tanh> (<hyperbolic-trig>) ())
|
|
|
+
|
|
|
+ @export
|
|
|
+ (defclass <csch> (<hyperbolic-trig>) ())
|
|
|
+
|
|
|
+ @export
|
|
|
+ (defclass <sech> (<hyperbolic-trig>) ())
|
|
|
+
|
|
|
+ @export
|
|
|
+ (defclass <coth> (<hyperbolic-trig>) ())
|
|
|
+
|
|
|
+ @export
|
|
|
+ (defclass <asinh> (<hyperbolic-trig> <inverse-trig>) ())
|
|
|
+
|
|
|
+ @export
|
|
|
+ (defclass <acosh> (<hyperbolic-trig> <inverse-trig>) ())
|
|
|
+
|
|
|
+ @export
|
|
|
+ (defclass <atanh> (<hyperbolic-trig> <inverse-trig>) ())
|
|
|
+
|
|
|
+ @export
|
|
|
+ (defclass <acsch> (<hyperbolic-trig> <inverse-trig>) ())
|
|
|
+
|
|
|
+ @export
|
|
|
+ (defclass <asech> (<hyperbolic-trig> <inverse-trig>) ())
|
|
|
+
|
|
|
+ @export
|
|
|
+ (defclass <acoth> (<hyperbolic-trig> <inverse-trig>) ())
|
|
|
+#+END_SRC
|
|
|
|
|
|
** DONE Blended Types -- Polynomial Terms
|
|
|
CLOSED: [2019-01-05 Sat 09:46]
|
|
@@ -1382,6 +1479,7 @@ As all of the packages are defined centrally, this makes resolving inter-package
|
|
|
<<type-division>>
|
|
|
<<type-exponentials>>
|
|
|
<<type-logarithmics>>
|
|
|
+ <<type-trigs>>
|
|
|
|
|
|
<<type-poly-term>>
|
|
|
#+END_SRC
|