File: DataTypes.de.texi

package info (click to toggle)
maxima 5.49.0%2Bdsfg-2
  • links: PTS
  • area: main
  • in suites: forky
  • size: 128,932 kB
  • sloc: lisp: 437,845; fortran: 14,665; tcl: 10,143; sh: 4,598; makefile: 2,206; ansic: 447; java: 374; python: 262; perl: 201; xml: 60; awk: 28; sed: 15; javascript: 2
file content (986 lines) | stat: -rw-r--r-- 33,026 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
@c -----------------------------------------------------------------------------
@c File        : DataTypes.de.texi
@c License     : GNU General Public License (GPL)
@c Language    : German
@c Original    : DataTypes.texi revision 25.09.2011
@c Translation : Dr. Dieter Kaiser
@c Date        : 15.10.2010
@c Revision    : 25.09.2011
@c 
@c This file is part of Maxima -- GPL CAS based on DOE-MACSYMA
@c -----------------------------------------------------------------------------

@menu
* Zahlen::
* Zeichenketten::
* Funktionen und Variablen f@"ur Konstante::
* Listen::
* Arrays::
* Strukturen::
@end menu

@c -----------------------------------------------------------------------------
@node Zahlen, Zeichenketten, Datentypen und Strukturen, Datentypen und Strukturen
@section Zahlen
@c -----------------------------------------------------------------------------

@menu
* Einf@"uhrung in Zahlen::
* Funktionen und Variablen f@"ur Zahlen::
@end menu

@c -----------------------------------------------------------------------------
@node Einf@"uhrung in Zahlen, Funktionen und Variablen f@"ur Zahlen, Zahlen, Zahlen
@subsection Einf@"uhrung in Zahlen
@c -----------------------------------------------------------------------------

@subheading Ganze und rationale Zahlen

Arithmetische Rechnungen mit ganzen oder rationalen Zahlen sind exakt.
Prinzipiell k@"onnen die ganzen und rationalen Zahlen eine beliebige Anzahl an 
Stellen haben.  Eine Obergrenze ist allein der zur Verf@"ugung stehende
Speicherplatz.

@example
(%i1) 1/3+5/4+3;
                               55
(%o1)                          --
                               12
(%i2) 100!;
(%o2) 9332621544394415268169923885626670049071596826438162146859\
2963895217599993229915608941463976156518286253697920827223758251\
185210916864000000000000000000000000
(%i3) 100!/101!;
                                1
(%o3)                          ---
                               101
@end example

Funktionen f@"ur ganze und rationale Zahlen:

@verbatim
   integerp       numberp       nonnegintegerp     
   oddp           evenp
   ratnump        rationalize
@end verbatim

@subheading Gleitkommazahlen

Maxima rechnet mit Gleitkommazahlen in doppelter Genauigkeit.  Weiterhin kann
Maxima mit gro@ss{}en Gleitkommazahlen rechnen, die prinzipiell eine beliebige
Genauigkeit haben.

Gleitkommazahlen werden mit einem Dezimalpunkt eingegeben.  Der Exponent kann 
mit "f", "e" oder "d" angegeben werden.  Intern rechnet Maxima
ausschlie@ss{}lich mit Gleitkommazahlen in doppelter Genauigkeit, die immer mit
"e" f@"ur den Exponenten angezeigt werden.  Gro@ss{}e Gleitkommazahlen werden
mit dem Exponenten "b" bezeichnet.  Gro@ss{}- und Kleinschreibung werden bei der
Schreibweise des Exponenten nicht unterschieden.

@example
(%i1) [2.0,1f10,1,e10,1d10,1d300];
(%o1)        [2.0, 1.e+10, 1, e10, 1.e+10, 1.e+300]
(%i2) [2.0b0,1b10,1b300];
(%o2)               [2.0b0, 1.0b10, 1.0b300]
@end example

@noindent
Ist mindestens eine Zahl in einer Rechnung eine Gleitkommazahl, werden die 
Argumente in Gleitkommazahlen umgewandelt und eine Gleitkommazahl als Ergebnis
zur@"uckgegeben.  Dies wird auch f@"ur gro@ss{}e Gleitkommazahlen ausgef@"uhrt.

@example
(%i1) 2.0+1/2+3;
(%o1)                                 5.5
(%i2) 2.0b0+1/2+3;
(%o2)                                5.5b0
@end example

@noindent
Mit den Funktionen @mref{float} und @mref{bfloat} werden Zahlen in
Gleitkommazahlen und gro@ss{}e Gleitkommazahlen umgewandelt:

@example
(%i1) float([2,1/2,1/3,2.0b0]);
(%o1)          [2.0, 0.5, .3333333333333333, 2.0]
(%i2) bfloat([2,1/2,1/3,2.0b0]);
(%o2)     [2.0b0, 5.0b-1, 3.333333333333333b-1, 2.0b0]
@end example

@noindent
Funktionen und Variablen f@"ur Gleitkommazahlen:

@verbatim
   float        floatnump     
   bfloat       bfloatp       fpprec
   float2bf     bftorat       ratepsilon

   number_pbranch 
   m1pbranch
@end verbatim

@subheading Komplexe Zahlen

Maxima kennt keinen eigenen Typ f@"ur komplexe Zahlen.  Komplexe Zahlen werden 
von Maxima intern als die Addition von Realteil und dem mit der Imagin@"aren 
Einheit @mref{%i} multiplizierten Imagin@"arteil dargestellt.  Zum Beispiel sind
die komplexen Zahlen @code{2 + 3*%i} und @code{2 - 3*%i} die Wurzeln der 
Gleichung @code{x^2 - 4*x + 13 = 0}.

Maxima vereinfacht Produkte, Quotienten, Wurzeln und andere Ausdr@"ucke mit 
komplexen Zahlen nicht automatisch zu einer komplexen Zahl.  Um Produkte mit
komplexen Zahlen zu vereinfachen, kann der Ausdruck mit der Funktion 
@mref{expand} expandiert werden.

Funktionen f@"ur komplexe Zahlen:

@verbatim
   realpart     imagpart      rectform     polarform
   cabs         carg          conjugate    csign
@end verbatim

@c -----------------------------------------------------------------------------
@node Funktionen und Variablen f@"ur Zahlen, , Einf@"uhrung in Zahlen, Zahlen
@subsection Funktionen und Variablen f@"ur Zahlen
@c -----------------------------------------------------------------------------

@c --- 17.02.2011 DK -----------------------------------------------------------
@anchor{bfloat}
@deffn {Funktion} bfloat (@var{expr})

Konvertiert alle Zahlen im Ausdruck @var{expr} in gro@ss{}e Gleitkommazahlen.
Die Anzahl der Stellen wird durch die Optionsvariable 
@mref{fpprec} spezifiziert.

Hat die Optionsvariable @mref{float2bf} den Wert @code{false}, gibt Maxima eine
Warnung aus, wenn eine Gleitkommazahl mit doppelter Genauigkeit in eine 
gro@ss{}e Gleitkommazahl umgewandelt wird.

Siehe auch die Funktion und den Auswertungsschalter @mref{float} sowie die
Optionsvariable @mref{numer} f@"ur die Umwandlung von Zahlen in Gleitkommazahlen
mit doppelter Genauigkeit.

Beispiele:

@example
(%i1) bfloat([2, 3/2, 1.5]);
(%o1)                 [2.0b0, 1.5b0, 1.5b0]
(%i2) bfloat(sin(1/2));
(%o2)                  4.79425538604203b-1
(%i3) bfloat(%pi),fpprec:45;
(%o3)    3.1415926535897932384626433832795028841971694b0
@end example
@end deffn

@c --- 17.02.2011 DK -----------------------------------------------------------
@anchor{bfloatp}
@deffn {Funktion} bfloatp (@var{number})

Gibt den Wert @code{true} zur@"uck, wenn das Argument @var{number} eine
gro@ss{}e Gleitkommazahl ist, ansonsten den Wert @code{false}.

Siehe auch die Funktionen @mrefcomma{numberp} @mrefcomma{floatnump}@w{}
@mref{ratnump} und @mrefdot{integerp}

Beispiele:

@example
(%i1) bfloatp(1.5b0);
(%o1)                         true
(%i2) a:bfloat(%e);
(%o2)                  2.718281828459045b0
(%i3) bfloatp(a);
(%o3)                         true
(%i4) bfloatp(1.5);
(%o4)                         false
@end example
@end deffn

@c --- 03.11.2011 DK -----------------------------------------------------------
@anchor{bftorat}
@defvr {Optionsvariable} bftorat
Standardwert: @code{false}

Die Optionsvariable @code{bftorat} kontrolliert die Umwandlung von gro@ss{}en
Gleitkommazahlen in rationale Zahlen.  Hat @code{bftorat} den Wert @code{false},
wird die Genauigkeit der Umwandlung von der Optionsvariablen
@mref{ratepsilon} kontrolliert.  Hat dagegen @code{bftorat} den Wert
@code{true}, wird die gro@ss{}e Gleitkommazahl exakt durch die rationale Zahl 
repr@"asentiert.

Hinweis: @code{bftorat} hat keinen Einfluss auf die Umwandlung in rationale
Zahlen mit der Funktion @mrefdot{rationalize}

Beispiel:

@example
(%i1) ratepsilon:1e-4;
(%o1)                         1.e-4
(%i2) rat(bfloat(11111/111111)), bftorat:false;
`rat' replaced 9.99990999991B-2 by 1/10 = 1.0B-1
                               1
(%o2)/R/                       --
                               10
(%i3) rat(bfloat(11111/111111)), bftorat:true;
`rat' replaced 9.99990999991B-2 by 11111/111111 = 9.99990999991B-2
                             11111
(%o3)/R/                     ------
                             111111
@end example
@end defvr

@c --- 17.02.2011 DK -----------------------------------------------------------
@anchor{bftrunc}
@defvr {Optionsvariable} bftrunc
Standardwert: @code{true}

Hat die Optionsvariable @code{bftrunc} den Wert @code{true}, werden bei der
Ausgabe einer gro@ss{}en Gleitkommazahl nachfolgende Nullen nicht angezeigt.

Beispiele:

@example
(%i1) bftrunc:true;
(%o1)                         true
(%i2) bfloat(1);
(%o2)                         1.0b0
(%i3) bftrunc:false;
(%o3)                         false
(%i4) bfloat(1);
(%o4)                  1.000000000000000b0
@end example
@end defvr

@c --- 17.02.2011 DK -----------------------------------------------------------
@anchor{evenp}
@deffn {Funktion} evenp (@var{expr})

Ist das Argument @var{expr} eine gerade ganze Zahl, wird @code{true}
zur@"uckgegeben.  In allen anderen F@"allen wird @code{false} zur@"uckgegeben.

@code{evenp} gibt f@"ur Symbole oder Ausdr@"ucke immer den Wert @code{false} 
zur@"uck, auch wenn das Symbol als gerade ganze Zahl deklariert ist oder der 
Ausdruck eine gerade ganze Zahl repr@"asentiert.  Siehe die Funktion
@mrefcomma{featurep} um zu testen, ob ein Symbol oder Ausdruck eine gerade
ganze Zahl repr@"asentiert.

Beispiele:

@example
(%i1) evenp(2);
(%o1)                         true
(%i2) evenp(3);
(%o2)                         false
(%i3) declare(n, even);
(%o3)                         done
(%i4) evenp(n);
(%o4)                         false
(%i5) featurep(n, even);
(%o5)                         true
@end example
@end deffn

@c --- 08.03.2011 DK -----------------------------------------------------------
@anchor{float}
@deffn  {Funktion} float (@var{expr})
@deffnx {Optionsvariable} float

Die Funktion @code{float} konvertiert ganze, rationale und gro@ss{}e
Gleitkommazahlen, die im Argument @var{expr} enthalten sind, in Gleitkommazahlen
mit doppelter Genauigkeit.

@code{float} ist auch eine Optionsvariable mit dem Standardwert @code{false} und
ein Auswertungsschalter f@"ur die Funktion @mrefdot{ev}  Erh@"alt die
Optionsvariable @code{float} den Wert @code{true}, werden rationale und
gro@ss{}e Gleitkommazahlen sofort in Gleitkommazahlen umgewandelt.  Als
Auswertungsschalter der Funktion @code{ev} hat @code{float} denselben Effekt,
ohne dass die Optionsvariable @code{float} ihren Wert @"andert.  Im Unterschied
zur Funktion @code{float} werden durch das Setzen der Optionsvariablen oder bei
Verwendung als Auswertungsschalter keine ganze Zahlen in Gleitkommazahlen
umgewandelt.  Daher k@"onnen die beiden Kommandos @code{ev(expr, float)} und
@code{float(expr)} ein unterschiedliches Ergebnis haben.

Siehe auch die Optionsvariable @mrefdot{numer}

Beispiele:

In den ersten zwei Beispielen werden die Zahlen @code{1/2} und @code{1} in eine
Gleitkommazahl umgewandelt.  Die Sinusfunktion vereinfacht sodann zu einem
numerischen Wert.  Das Auswertungsschalter @code{float} wandelt ganze Zahlen
nicht in eine Gleitkommazahl um.  Daher wird @code{sin(1)} nicht zu einem
numerischen Wert vereinfacht.

@example
(%i1) float(sin(1/2));
(%o1)                   0.479425538604203
(%i2) float(sin(1));
(%o2)                   .8414709848078965
(%i3) sin(1/2),float;
(%o3)                   0.479425538604203
(%i4) sin(1),float;
(%o4)                        sin(1)
@end example
@end deffn

@c --- 17.02.2011 DK -----------------------------------------------------------
@anchor{float2bf}
@defvr {Optionsvariable} float2bf
Standardwert: @code{true}
 
Hat die Optionsvariable @code{float2bf} den Wert @code{false}, wird eine
Warnung ausgegeben, wenn eine Gleitkommazahl in eine gro@ss{}e Gleitkommazahl 
umgewandelt wird, da die Umwandlung zu einem Verlust an Genauigkeit f@"uhren 
kann.

Beispiele:

@example
(%i1) float2bf:true;
(%o1)                         true
(%i2) bfloat(1.5);
(%o2)                         1.5b0
(%i3) float2bf:false;
(%o3)                         false
(%i4) bfloat(1.5);
bfloat: converting float 1.5 to bigfloat.
(%o4)                         1.5b0
@end example
@end defvr

@c --- 17.02.2011 DK -----------------------------------------------------------
@anchor{floatnump}
@deffn {Funktion} floatnump (@var{number})

Gibt den Wert @code{true} zur@"uck, wenn das Argument @var{number} eine 
Gleitkommazahl ist.  Ansonsten wird @code{false} zur@"uckgegeben.  Auch wenn 
@var{number} eine gro@ss{}e Gleitkommazahl ist, ist das Ergebnis @code{false}.

Siehe auch die Funktionen @mrefcomma{numberp} @mrefcomma{bfloatp}@w{}
@mref{ratnump} und @mrefdot{integerp}

Beispiele:

@example
(%i1) floatnump(1.5);
(%o1)                         true
(%i2) floatnump(1.5b0);
(%o2)                         false
@end example
@end deffn

@c --- 17.02.2011 DK -----------------------------------------------------------
@anchor{fpprec}
@defvr {Optionsvariable} fpprec
Standardwert: 16

@code{ffprec} ist die Zahl der Stellen f@"ur das Rechnen mit gro@ss{}en 
Gleitkommazahlen.  @code{ffprec} hat keinen Einflu@ss{} auf das Rechnen mit
Gleitkommazahlen in doppelter Genauigkeit.  Siehe auch @mref{bfloat} und 
@mrefdot{fpprintprec}

Beispiele:

@example
(%i1) fpprec:16;
(%o1)                          16
(%i2) bfloat(%pi);
(%o2)                  3.141592653589793b0
(%i3) fpprec:45;
(%o3)                          45
(%i4) bfloat(%pi);
(%o4)    3.1415926535897932384626433832795028841971694b0
(%i5) sin(1.5b0);
(%o5)   9.97494986604054430941723371141487322706651426b-1
@end example
@end defvr

@c --- 17.02.2011 DK -----------------------------------------------------------
@anchor{fpprintprec}
@defvr {Optionsvariable} fpprintprec
Standardwert: 0

@code{fpprintprec} ist die Anzahl der Stellen, die angezeigt werden, wenn eine
Gleitkommazahl ausgegeben wird.

Hat @code{fpprintprec} einen Wert zwischen 2 und 16, ist die Anzahl der 
angezeigten Stellen f@"ur einfache Gleitkommazahlen gleich dem Wert von 
@code{fpprintprec}.  Hat @code{fpprintprec} den Wert 0 oder ist gr@"o@ss{}er als
16 werden 16 Stellen angezeigt.

Hat f@"ur gro@ss{}e Gleitkommazahlen @code{fpprintprec} einen Wert zwischen 2 
und @mrefcomma{fpprec} ist die Anzahl der angezeigten Stellen gleich
@code{fpprintprec}.  Ist der Wert von @code{fpprintprec} gleich 0 oder 
gr@"o@ss{}er als @code{fpprec} werden @code{fpprec} Stellen angezeigt.

@code{fpprintprec} kann nicht den Wert 1 erhalten.

Beispiele:

@example
(%i1) fpprec:16;
(%o1)                          16
(%i2) fpprintprec:5;
(%o2)                           5
(%i3) float(%pi);
(%o3)                        3.1416
(%i4) bfloat(%pi);
(%o4)                       3.1415b0
(%i5) fpprintprec:25;
(%o5)                          25
(%i6) bfloat(%pi);
(%o6)                  3.141592653589793b0
(%i7) bfloat(%pi);
(%o7)                  3.141592653589793b0
(%i8) fpprec:45;
(%o8)                          45
(%i9) bfloat(%pi);
(%o9)             3.141592653589793238462643b0
(%i10) fpprintprec:45;
(%o10)                         45
(%i11) bfloat(%pi);
(%o11)   3.1415926535897932384626433832795028841971694b0
@end example
@end defvr

@c --- 15.10.2010 DK -----------------------------------------------------------
@anchor{integerp}
@deffn {Funktion} integerp (@var{number})

Hat den R@"uckgabewert @code{true}, wenn das Argument @var{number} eine ganze 
Zahl ist.  In allen anderen F@"allen gibt @code{integerp} den Wert @code{false} 
zur@"uck.

@code{integerp} gibt f@"ur Symbole oder Ausdr@"ucke immer den Wert @code{false} 
zur@"uck, auch wenn das Symbol als ganze Zahl deklariert ist oder der Ausdruck 
eine ganze Zahl repr@"asentiert.  Siehe die Funktion @mrefcomma{featurep} um zu
testen, ob ein Symbol oder Ausdruck eine ganze Zahl repr@"asentiert.

Beispiele:

@example
(%i1) integerp (1);
(%o1)                         true
(%i2) integerp (1.0);
(%o2)                         false
(%i3) integerp (%pi);
(%o3)                         false
(%i4) declare (n, integer)$
(%i5) integerp (n);
(%o5)                         false
@end example
@end deffn

@c --- 08.10.2010 --------------------------------------------------------------
@anchor{m1pbranch}
@need 800
@defvr {Optionsvariable} m1pbranch
Standardwert: @code{false}

Die Optionsvariable @code{m1pbranch} kontrolliert die Vereinfachung der
Exponentiation von @code{-1} f@"ur den Fall, dass die Optionsvariable
@mref{domain} den Wert @code{complex} hat.  Hat @code{m1pbranch} f@"ur diesen
Fall den Wert @code{true}, wird die Exponentiation von @code{-1} zu einem
Ausdruck vereinfacht, der dem Hauptwert entspricht.  Die Auswirkung der
Optionsvariable @code{m1pbranch} ist in der folgenden Tabelle gezeigt.

@example
@group
              domain:real
                            
(-1)^(1/3):      -1
(-1)^(1/4):   (-1)^(1/4)

             domain:complex
          
m1pbranch:false          m1pbranch:true
(-1)^(1/3)               1/2+%i*sqrt(3)/2
(-1)^(1/4)              sqrt(2)/2+%i*sqrt(2)/2
@end group
@end example

Siehe auch die Optionsvariable @mrefdot{numer_pbranch}
@end defvr

@c --- 17.02.2011 DK -----------------------------------------------------------
@anchor{nonnegintegerp}
@deffn {Funktion} nonnegintegerp (@var{number})

Gibt den Wert @code{true} zur@"uck, wenn @code{number} eine ganze positive Zahl
oder Null ist.  Siehe auch @mrefdot{integerp}

Beispiele:

@example
(%i1) nonnegintegerp(2);
(%o1)                         true
(%i2) nonnegintegerp(-2);
(%o2)                         false
@end example
@end deffn

@c --- 21.08.2010 --------------------------------------------------------------
@anchor{numberp}
@deffn {Funktion} numberp (@var{number})

Hat das Ergebnis @code{true}, wenn @var{number} eine ganze, rationale, eine
Gleitkommazahl oder eine gro@ss{}e Gleitkommazahl ist.  Ansonsten ist das 
Ergebnis @code{false}.

@code{numberp} gibt f@"ur ein Symbol immer das Ergebnis @code{false} zur@"uck.
Dies ist auch dann der Fall, wenn das Symbol eine numerische Konstante wie 
@mref{%pi} ist oder wenn das Symbol mit der Funktion @mref{declare} eine 
Eigenschaft wie @mrefcomma{integer} @mref{real} oder @mref{complex} erhalten
hat.

Beispiele:

@example
(%i1) numberp (42);
(%o1)                         true
(%i2) numberp (-13/19);
(%o2)                         true
(%i3) numberp (3.14159);
(%o3)                         true
(%i4) numberp (-1729b-4);
(%o4)                         true
(%i5) map (numberp, [%e, %pi, %i, %phi, inf, minf]);
(%o5)      [false, false, false, false, false, false]
(%i6) declare(a,even, b,odd, c,integer, d,rational, e,real);
(%o6)                         done
(%i7) map (numberp, [a, b, c, d, e]);
(%o7) [false, false, false, false, false]
@end example
@end deffn

@c --- 08.03.2011 DK -----------------------------------------------------------
@anchor{numer}
@defvr {Optionsvariable} numer
Standardwert: @code{false}

Hat die Optionsvariable @code{numer} den Wert @code{true}, werden rationale
Zahlen und gro@ss{}e Gleitkommazahlen in Gleitkommazahlen umgewandelt.
Weiterhin werden Konstante wie zum Beispiel @mrefcomma{%pi} die einen
numerischen Wert haben, durch diesen ersetzt.  Mathematische Funktionen mit
numerischen Argumenten vereinfachen zu einer Gleitkommazahl.  Wird die
Optionsvariable @code{numer} gesetzt, erh@"alt die Optionsvariable
@mref{float} denselben Wert.  Im Unterschied zur Optionsvariablen @code{float}
vereinfachen auch mathematische Funktionen mit einem ganzzahligen Wert wie zum
Beispiel @code{sin(1)} zu einem numerischen Wert.

@code{numer} ist auch ein Auswertungsschalter der Funktion @mrefdot{ev}  Der
Auswertungsschalter hat die gleiche Funktionsweise wie die Optionsvariable,
ohne dass die Optionsvariable ihren Wert @"andert.

Siehe auch @mref{float} und @mrefdot{%enumer}

Beispiele:

Erh@"alt @code{numer} den Wert @code{true}, werden rationale Zahlen, Konstante
mit einem numerischen Wert und mathematische Funktionen mit numerischen
Argumenten zu einer Gleitkommazahl ausgewertet oder vereinfacht.

@example
(%i1) numer:false;
(%o1)                         false
(%i2) [1, 1/3, %pi, sin(1)];
                           1
(%o2)                  [1, -, %pi, sin(1)]
                           3
(%i3) numer:true;
(%o3)                         true
(%i4) [1, 1/3, %pi, sin(1)];
(%o4) [1, .3333333333333333, 3.141592653589793, 
                                               .8414709848078965]
@end example

@code{numer} ist auch ein Auswertungsschalter der Funktion @code{ev}.  Hier wird
die Kurzschreibweise der Funktion @code{ev} verwendet.

@example
(%i1) [sqrt(2), sin(1), 1/(1+sqrt(3))];
                                        1
(%o1)            [sqrt(2), sin(1), -----------]
                                   sqrt(3) + 1

(%i2) [sqrt(2), sin(1), 1/(1+sqrt(3))],numer;
(%o2) [1.414213562373095, .8414709848078965, .3660254037844387]
@end example
@end defvr

@c --- 15.10.2010 DK -----------------------------------------------------------
@anchor{numer_pbranch}
@defvr {Optionsvariable} numer_pbranch
Standardwert: @code{false}

Die Optionsvariable @code{numer_pbranch} kontrolliert die Vereinfachung der
Exponentiation einer negativen ganzen, rationalen oder Gleitkommazahl.
Hat @code{numer_pbranch} den Wert @code{true} und ist der Exponent eine 
Gleitkommazahl oder hat die Optionsvariable @mref{numer} den Wert @code{true}, 
dann berechnet Maxima den Hauptwert der Exponentiation.  Ansonsten wird ein 
vereinfachter Ausdruck, aber nicht numerischer Wert zur@"uckgegeben.  Siehe auch
die Optionsvariable @mrefdot{m1pbranch}

Beispiele:

@example
(%i1) (-2)^0.75;
(%o1) (-2)^0.75

(%i2) (-2)^0.75,numer_pbranch:true;
(%o2) 1.189207115002721*%i-1.189207115002721

(%i3) (-2)^(3/4);
(%o3) (-1)^(3/4)*2^(3/4)

(%i4) (-2)^(3/4),numer;
(%o4) 1.681792830507429*(-1)^0.75

(%i5) (-2)^(3/4),numer,numer_pbranch:true;
(%o5) 1.189207115002721*%i-1.189207115002721
@end example
@end defvr

@c --- 08.03.2011 DK -----------------------------------------------------------
@anchor{numerval}
@deffn {Funktion} numerval (@var{x_1}, @var{val_1}, @dots{}, @var{var_n}, @var{val_n})

Die Variablen @var{x_1}, @dots{}, @var{x_n} erhalten die numerischen Werte
@var{val_1}, @dots{}, @code{val_n}.  Die numerischen Werte werden immer dann
f@"ur die Variablen in Ausdr@"ucke eingesetzt, wenn die Optionsvariable 
@mref{numer} den Wert @code{true} hat.  Siehe auch @mrefdot{ev}

Die Argumente @var{val_1}, @dots{}, @var{val_n} k@"onnen auch beliebige 
Ausdr@"ucke sein, die wie numerische Werte f@"ur Variablen eingesetzt werden.

Beispiele:

@example
(%i1) numerval(a, 123, b, x^2)$

(%i2) [a, b];
(%o2)                        [a, b]
(%i3) numer:true;
(%o3)                         true
(%i4) [a, b];
                                   2
(%o4)                       [123, x ]
@end example
@end deffn

@c --- 18.02.2011 DK -----------------------------------------------------------
@anchor{oddp}
@deffn {Funktion} oddp (@var{expr})

Gibt @code{true} zur@"uck, wenn das Argument @var{expr} eine ungerade ganze Zahl
ist.  In allen anderen F@"allen wird @code{false} zur@"uckgegeben.

@code{oddp} gibt f@"ur Symbole oder Ausdr@"ucke immer den Wert @code{false} 
zur@"uck, auch wenn das Symbol als ungerade ganze Zahl deklariert ist oder der 
Ausdruck eine ungerade ganze Zahl repr@"asentiert.  Siehe die Funktion 
@mrefcomma{featurep} um zu testen, ob ein Symbol oder Ausdruck eine ungerade 
ganze Zahl repr@"asentiert.

Beispiele:

@example
(%i1) oddp(3);
(%o1)                         true
(%i2) oddp(2);
(%o2)                         false
(%i3) declare(n,odd);
(%o3)                         done
(%i4) oddp(n);
(%o4)                         false
(%i5) featurep(n,odd);
(%o5)                         true
@end example
@end deffn

@c --- 03.11.2011 DK -----------------------------------------------------------
@anchor{ratepsilon}
@defvr {Optionsvariable} ratepsilon
Standardwert: @code{2.0e-15}

Die Optionsvariable @code{ratepsilon} kontrolliert die Genauigkeit, mit der
Gleitkommazahlen in rationale Zahlen umgewandelt werden, wenn die
Optionsvariable @code{bftorat} den Wert @code{false} hat.  F@"ur ein Beispiel
siehe die Optionsvariable @mrefdot{bftorat}
@end defvr

@c --- 18.02.2011 DK -----------------------------------------------------------
@anchor{rationalize}
@deffn {Funktion} rationalize (@var{expr})

Konvertiert alle Gleitkommazahlen einschlie@ss{}lich gro@ss{}er 
Gleitkommazahlen, die in dem Ausdruck @var{expr} auftreten, in rationale Zahlen.

Es mag @"uberraschend sein, dass @code{rationalize(0.1)} nicht das Ergebnis
@code{1/10} hat.  Dies ist nicht speziell f@"ur Maxima.  Ursache ist, dass die 
gebrochene Zahl @code{1/10} in der internen Darstellung als bin@"are Zahl keine
endliche Darstellung hat.

Siehe auch die Funktionen @mref{float} und @mref{bfloat} sowie die
Auswertungsschalter @mref{float} und @mrefcomma{numer} um eine rationale Zahl
in eine Gleitkommazahl umzuwandeln.

Beispiele:

@example
(%i1) rationalize (0.5);
                                1
(%o1)                           -
                                2
(%i2) rationalize (0.1);
                        3602879701896397
(%o2)                   -----------------
                        36028797018963968
(%i3) fpprec : 5$
(%i4) rationalize (0.1b0);
                             209715
(%o4)                        -------
                             2097152
(%i5) fpprec : 20$
@group
(%i6) rationalize (0.1b0);
                     236118324143482260685
(%o6)                ----------------------
                     2361183241434822606848
@end group
(%i7) rationalize (sin (0.1*x + 5.6));
@group
               3602879701896397 x   3152519739159347
(%o7)      sin(------------------ + ----------------)
               36028797018963968    562949953421312
@end group
(%i8) float(%);
(%o8)                          sin(0.1 x + 5.6)
@end example
@end deffn

@c --- 08.10.2010 DK -----------------------------------------------------------
@anchor{ratnump}
@deffn {Funktion} ratnump (@var{number})

Gibt @code{true} zur@"uck, wenn @var{number} eine ganze oder rationale Zahl ist.
In allen anderen F@"allen ist das Ergebnis @code{false}.

Siehe auch die Funktionen @mrefcomma{numberp} @mrefcomma{integerp}@w{}
@mref{floatnump} und @mrefdot{bfloatp}

Beispiele:

@example
(%i1) ratnump(1/2);
(%o1)                         true
(%i2) ratnump(3);
(%o2)                         true
(%i3) ratnump(3.0);
(%o3)                         false
@end example
@end deffn

@page
@c -----------------------------------------------------------------------------
@node Zeichenketten, Funktionen und Variablen f@"ur Konstante, Zahlen, Datentypen und Strukturen
@section Zeichenketten
@c -----------------------------------------------------------------------------

@menu
* Einf@"uhrung in Zeichenketten::
* Funktionen und Variablen f@"ur Zeichenketten::
@end menu

@c -----------------------------------------------------------------------------
@node Einf@"uhrung in Zeichenketten, Funktionen und Variablen f@"ur Zeichenketten, Zeichenketten, Zeichenketten
@subsection Einf@"uhrung in Zeichenketten
@c -----------------------------------------------------------------------------

@cindex backslash
@ifnotinfo
@cindex \
@end ifnotinfo
@ifinfo
@c adding the backslash to the index here breaks the LaTeX syntax of the file
@c maxima.fns that is created by the first pdfLaTeX run by "make pdf".
@end ifinfo
Zeichenketten werden bei der Eingabe in Anf@"uhrungszeichen gesetzt.  Sie werden 
standardm@"a@ss{}ig ohne Anf@"uhrungszeichen ausgegeben.  Hat die 
Optionsvariable @mref{stringdisp} den Wert @code{true}, werden Zeichenketten mit
Anf@"uhrungszeichen dargestellt.

Zeichenketten k@"onnen jedes Zeichen einschlie@ss{}lich Tabulator-, 
Zeilenvorschub- oder Wagenr@"ucklauf-Zeichen enthalten.  Das Anf@"uhrungszeichen 
wird innerhalb einer Zeichenkette durch @code{\"} und der Backslash durch 
@code{\\} dargestellt.  Ein Backslash am Ende einer Eingabezeile erlaubt die
Fortsetzung einer Zeichenkette in der n@"achsten Zeile.  Maxima kennt keine 
weiteren Kombinationen mit einem Backslash.  Daher wird der Backslash an anderer
Stelle ignoriert.  Maxima kennt keine andere M@"oglichkeit, als spezielle
Zeichen wie ein Tabulator-, Zeilenvorschub- oder Wagenr@"ucklaufzeichen in einer
Zeichenkette darzustellen.

Maxima hat keinen Typ f@"ur ein einzelnes Zeichen.  Einzelne Zeichen werden
daher als eine Zeichenkette mit einem Zeichen dargestellt.  Folgende Funktionen
und Variablen arbeiten mit Zeichenketten:

@verbatim
   concat   sconcat   string   stringdisp
@end verbatim

@noindent
Das Zusatzpaket @code{stringproc} enth@"alt eine umfangreiche Bibliothek an 
Funktionen f@"ur Zeichenketten.  Siehe @ref{stringproc}.

Beispiele:

@example
(%i1) s_1 : "This is a string.";
(%o1)               This is a string.
(%i2) s_2 : "Embedded \"double quotes\" and backslash \\ characters.";
(%o2) Embedded "double quotes" and backslash \ characters.
(%i3) s_3 : "Embedded line termination
in this string.";
(%o3) Embedded line termination
in this string.
(%i4) s_4 : "Ignore the \
line termination \
characters in \
this string.";
(%o4) Ignore the line termination characters in this string.
(%i5) stringdisp : false;
(%o5)                         false
(%i6) s_1;
(%o6)                   This is a string.
(%i7) stringdisp : true;
(%o7)                         true
(%i8) s_1;
(%o8)                  "This is a string."
@end example

@c -----------------------------------------------------------------------------
@node Funktionen und Variablen f@"ur Zeichenketten, , Einf@"uhrung in Zeichenketten, Zeichenketten
@subsection Funktionen und Variablen f@"ur Zeichenketten
@c -----------------------------------------------------------------------------

@c --- 15.10.2010 DK -----------------------------------------------------------
@anchor{concat}
@deffn {Funktion} concat (@var{arg_1}, @var{arg_2}, @dots{})

Verkettet die Argumente @var{arg_1}, @var{arg_2}, @dots{} zu einer Zeichenkette 
oder einem Symbol.  Die Argumente m@"ussen sich zu einem Atom auswerten lassen.
Der R@"uckgabewert ist ein Symbol, wenn das erste Argument ein Symbol ist.
Ansonsten wird eine Zeichenkette zur@"uckgegeben.

@code{concat} wertet die Argumente aus.  Der @nxref{', Quote-Operator} @code{'}
verhindert die Auswertung.  Siehe auch die Funktion @mrefdot{sconcat}

Beispiele:

@example
(%i1) y: 7$
(%i2) z: 88$
(%i3) stringdisp:true$
(%i4) concat(y, z/2);
(%o4)                         "744"
(%i5) concat('y, z/2);
(%o5)                          y44
@end example

Einem Symbol, das mit @code{concat} konstruiert wird, kann ein Wert zugewiesen
werden und es kann in Ausdr@"ucken auftreten.

@example
(%i6) a: concat ('y, z/2);
(%o6)                          y44
@group
(%i7) a:: 123;
(%o7)                          123
@end group
(%i8) y44;
(%o8)                          123
(%i9) b^a;
                               y44
(%o9)                         b
(%i10) %, numer;
                                123
(%o11)                         b
@end example

@code{concat(1, 2)} gibt eine Zeichenkette als Ergebnis zur@"uck.

@example
(%i12) concat (1, 2) + 3;
(%o12)                       "12" + 3
@end example
@end deffn

@c --- 15.10.2010 DK -----------------------------------------------------------
@anchor{sconcat}
@deffn {Funktion} sconcat (@var{arg_1}, @var{arg_2}, @dots{})

Verkettet die Argumente @var{arg_1}, @var{arg_2}, @dots{} zu einer Zeichenkette.
Im Unterschied zu der Funktion @mref{concat} m@"ussen die Argumente @i{nicht} 
Atome sein.  Der R@"uckgabewert ist eine Zeichenkette.

Beispiel:

@example
(%i1) sconcat ("xx[", 3, "]:", expand ((x+y)^3));
(%o1)               xx[3]:y^3+3*x*y^2+3*x^2*y+x^3
@end example
@end deffn

@c --- 18.02.2011 DK -----------------------------------------------------------
@anchor{string}
@deffn {Funktion} string (@var{expr})

Konvertiert das Argument @code{expr} in eine lineare Darstellung, wie sie auch
vom Parser von der Eingabe eingelesen wird.  Die R@"uckgabe von @code{string}
ist eine Zeichenkette.  Diese kann nicht als Eingabe f@"ur eine Berechnung
genutzt werden.

Beispiele:

Die hier verwendete Funktion @mref{stringp} ist im Paket @mref{stringproc}@w{}
definiert und wird automatisch geladen.

@example
(%i1) stringdisp:true;
(%o1)                         true
(%i2) string(expand((a+b)^2));
(%o2)                    "b^2+2*a*b+a^2"
(%i3) stringp(%);
(%o3)                         true
@end example
@end deffn

@c --- 28.08.2010 DK -----------------------------------------------------------
@anchor{stringdisp}
@defvr {Optionsvariable} stringdisp
Standardwert: @code{false}

Hat @code{stringdisp} den Wert @code{true}, werden Zeichenketten mit
Anf@"uhrungszeichen ausgegeben.  Ansonsten werden keine Anf@"uhrungszeichen
ausgegeben.

Wird die Definition einer Funktion ausgegeben, werden enthaltene Zeichenketten
unabh@"angig vom Wert der Optionsvariablen @code{stringdisp} immer mit
Anf@"uhrungszeichen ausgegeben.

Beispiele:

@example
(%i1) stringdisp: false$
(%i2) "This is an example string.";
(%o2)              This is an example string.
(%i3) foo () :=
      print ("This is a string in a function definition.");
(%o3) foo() := 
              print("This is a string in a function definition.")
(%i4) stringdisp: true$
(%i5) "This is an example string.";
(%o5)             "This is an example string."
@end example
@end defvr

@c --- End of file DataTypes.de.texi -------------------------------------------