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
|
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <tice.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fileioc.h>
/* Some function prototypes. Maybe in the future these functions will become a library */
cplx_t Int24sToCplx(int real, int imag);
cplx_t FloatsToCplx(float real, float imag);
cplx_t RealsToCplx(real_t real, real_t imag);
cplx_t StrsToCplx(char *real, char **real_end, char *imag, char **imag_end);
/* Main Function */
void main(void) {
/* Declare some variables */
equ_t *my_equ;
list_t *my_list;
matrix_t *my_matrix;
real_t my_real;
cplx_t my_cplx;
real_t real_1_5 = os_FloatToReal(1.5);
real_t real_2_5 = os_FloatToReal(2.5);
real_t real_3_5 = os_FloatToReal(3.5);
/* Store the value '1.5+2.5i' into the variable B */
my_cplx = FloatsToCplx(1.5, 2.5);
ti_SetVar(TI_CPLX_TYPE, ti_B, &my_cplx);
/* Store the value '1.5' into the variable A */
my_real = real_1_5;
ti_SetVar(TI_REAL_TYPE, ti_A, &my_real);
/* Store the equation "2+2" into the Y1 variable */
my_equ = ti_MallocEqu(3); // Same as ti_AllocEqu(3, malloc)
my_equ->data[0] = '2';
my_equ->data[1] = tAdd;
my_equ->data[2] = '2';
ti_SetVar(TI_EQU_TYPE, ti_Y1, my_equ);
free(my_equ);
/* Store the list {1.5,2.5,3.5} to L1 */
my_list = ti_MallocList(3); // Same as ti_AllocList(3, malloc)
my_list->items[0] = real_1_5;
my_list->items[1] = real_2_5;
my_list->items[2] = real_3_5;
ti_SetVar(TI_REAL_LIST_TYPE, ti_L1, my_list);
free(my_list);
/* Store the matrix [[2.5,2.5]] to Ans */
my_matrix = ti_MallocMatrix(1,2); // Same as ti_AllocMatrix(1, 2, malloc)
matrix_element(my_matrix, 0, 0) = real_2_5;
matrix_element(my_matrix, 0, 1) = real_2_5;
ti_SetVar(TI_MATRIX_TYPE, ti_Ans, my_matrix);
free(my_matrix);
}
/* Stores some ints to a complex variable type */
cplx_t Int24sToCplx(int real, int imag) {
cplx_t res;
res.real = os_Int24ToReal(real);
res.real.sign |= TI_CPLX_TYPE;
res.imag = os_Int24ToReal(imag);
res.imag.sign |= TI_CPLX_TYPE;
return res;
}
/* Stores some floats to a complex variable type */
cplx_t FloatsToCplx(float real, float imag) {
cplx_t res;
res.real = os_FloatToReal(real);
res.real.sign |= TI_CPLX_TYPE;
res.imag = os_FloatToReal(imag);
res.imag.sign |= TI_CPLX_TYPE;
return res;
}
/* Converts a pair of reals to a complex number */
cplx_t RealsToCplx(real_t real, real_t imag) {
cplx_t res;
res.real = real;
res.real.sign |= TI_CPLX_TYPE;
res.imag = imag;
res.imag.sign |= TI_CPLX_TYPE;
return res;
}
/* Converts strings to a complex variable type */
cplx_t StrsToCplx(char *real, char **real_end, char *imag, char **imag_end) {
cplx_t res;
res.real = os_StrToReal(real, real_end);
res.real.sign |= TI_CPLX_TYPE;
res.imag = os_StrToReal(imag, imag_end);
res.imag.sign |= TI_CPLX_TYPE;
return res;
}
|