summaryrefslogtreecommitdiff
path: root/frontends/calculator/CEdev/examples/fileio_os_vars/src/main.c
blob: dd429d5c12edb304ccbd8674b80cd10e6812e979 (plain)
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;
}