mode_declare SciMax Toolbox modular_linear_solver

SciMax Toolbox >> mode_identity

mode_identity

Maxima Function

Calling Sequence

mode_identity (arg_1, arg_2)

Description

A special form used with mode_declare and macros to declare, e.g., a list of lists of flonums, or other compound data object. The first argument to mode_identity is a primitive value mode name as given to mode_declare (i.e., one of float, fixnum, number, list, or any), and the second argument is an expression which is evaluated and returned as the value of mode_identity. However, if the return value is not allowed by the mode declared in the first argument, an error or warning is signalled. The important thing is that the mode of the expression as determined by the Maxima to Lisp translator, will be that given as the first argument, independent of anything that goes on in the second argument. E.g., x: 3.3; mode_identity (fixnum, x); yields an error. mode_identity (flonum, x) returns 3.3 . This has a number of uses, e.g., if you knew that first (l) returned a number then you might write mode_identity (number, first (l)). However, a more efficient way to do it would be to define a new primitive,

firstnumb (x) ::= buildq ([x], mode_identity (number, x));

and use firstnumb every time you take the first of a list of numbers.

mode_declare SciMax Toolbox modular_linear_solver