Sponsored links: Algebra eBooks
 

Help Index

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

The Maxima on-line user's manual

Algebra Calculator

Search:

Define_variable Calculator

Define_variable

Function: define_variable (<name>, <default_value>, <mode>) Introduces a global variable into the Maxima environment. define_variable is useful in user-written packages, which are often translated or compiled.

define_variable (foo, 0, float);
fpprec : 600;
for m:301 step 1 thru 310 do(foo: bfloat(sum(k^m/3^k,k,1,2100)),foo: foo-floor(foo),disp(m,foo));

define_variable carries out the following steps:

1. mode_declare (<name>, <mode>) declares the mode of <name> to the translator. See mode_declare for a list of the possible modes.

2. If the variable is unbound, <default_value> is assigned to <name>.

3. declare (<name>, special) declares it special.

4. Associates <name> with a test function to ensure that <name> is only assigned values of the declared mode.

The value_check property can be assigned to any variable which has been defined via define_variable with a mode other than any. The value_check property is a lambda expression or the name of a function of one variable, which is called when an attempt is made to assign a value to the variable. The argument of the value_check function is the would-be assigned value.

define_variable evaluates default_value, and quotes name and mode. define_variable returns the current value of name, which is default_value if name was unbound before, and otherwise it is the previous value of name.

Examples:

     foo is a Boolean variable, with the initial value true.
          (%i1) define_variable (foo, true, boolean);
          (%o1)                         true
          (%i2) foo;
          (%o2)                         true
          (%i3) foo: false;
          (%o3)                         false
          (%i4) foo: %pi;
          Error: foo was declared mode boolean, has value: %pi
           -- an error.  Quitting.  To debug this try debugmode(true);
          (%i5) foo;
          (%o5)                         false

     bar is an integer variable, which must be prime.
          (%i1) define_variable (bar, 2, integer);
          (%o1)                           2
          (%i2) qput (bar, prime_test, value_check);
          (%o2)                      prime_test
          (%i3) prime_test (y) := if not primep(y) then
                                     error (y, "is not prime.");
          (%o3) prime_test(y) := if not primep(y)

                                             then error(y, "is not prime.")
          (%i4) bar: 1439;
          (%o4)                         1439
          (%i5) bar: 1440;
          1440 is not prime.
          #0: prime_test(y=1440)
           -- an error.  Quitting.  To debug this try debugmode(true);
          (%i6) bar;
          (%o6)                         1439

baz_quux is a variable which cannot be assigned a value. The mode any_check is like any, but any_check enables the value_check mechanism, and any does not.

          (%i1) define_variable (baz_quux, baz_quux, any_check);
          (%o1)                       baz_quux
          (%i2) F: lambda ([y], if y # baz_quux then
                           error ("Cannot assign to baz_quux."));
          (%o2) lambda([y], if y # baz_quux

                                  then error(Cannot assign to baz_quux.))
          (%i3) qput (baz_quux, F, value_check);
          (%o3) lambda([y], if y # baz_quux

                                  then error(Cannot assign to baz_quux.))
          (%i4) baz_quux: baz_quux;
          (%o4)                       baz_quux
          (%i5) baz_quux: sqrt(2);
          Cannot assign to baz_quux.
          #0: lambda([y],if y # baz_quux then
                           error("Cannot assign to baz_quux."))(y=sqrt(2))
           -- an error.  Quitting.  To debug this try debugmode(true);
          (%i6) baz_quux;
          (%o6)                       baz_quux

(%o1)                                true
(%i2) 

Define_variable Example

Related Examples

define_variable-load-true

load("simplex");

define_variable(x1,0,...

maximize_lp( 9*x1 + 7...

Calculate

define_variable-sum

define_variable(r, 10...

C(n,r) := n! /r! /(n-...

a(r, r+1) = 1 / (r + 1);

Calculate

define_variable-exp-float-plot2d-sqrt
plot2d(f(x),[x,-9,10]);

define_variable(s, 0....

define_variable(m, 1....

f(x):= (1/(sqrt(2*%pi...

Calculate

define_variable-exp-float-plot2d-sqrt
plot2d(f(x),[x,-9,10]);

define_variable(s, 0....

define_variable(m, 1....

f(x):= (1/(sqrt(2*%pi...

Calculate

define_variable-exp-float-plot2d-sqrt
plot2d(f(x),[x,-9,10]);

define_variable(s, 2....

define_variable(m, 1....

f(x):= (1/(sqrt(2*%pi...

Calculate

define_variable-load-true

load("simplex");

define_variable(x1,0,...

define_variable(x2,0,...

Calculate

define_variable-load-true

load("simplex");

define_variable(x1,0,...

maximize_lp( 9*x1 + 7...

Calculate

define_variable-load-true

load("simplex");

define_variable(x1,0,...

define_variable(x2,0,...

Calculate

define_variable-load-true

load("simplex");

define_variable(x1,0,...

define_variable(x2,0,...

Calculate

define_variable-exp-float-plot2d-sqrt
plot2d(f(x),[x,-9,10]);

define_variable(s, 0....

define_variable(m, 1....

f(x):= (1/(sqrt(2*%pi...

Calculate