Project

General

Profile

Download (65.7 KB) Statistics
| Branch: | Tag: | Revision:
1
#include <stdlib.h>
2
#include <assert.h>
3
#include "ALT_2.lustrec.h"
4

    
5
/* C code generated by main_lustre_compiler.native
6
   SVN version number 393
7
   Code is C99 compliant */
8
   
9
/* Imported nodes declarations */
10

    
11
/* Global constants (definitions) */
12

    
13
void AltitudeControl_reset (struct AltitudeControl_mem *self) {
14
  /*@
15
  ensures init_VariableRateLimit((*self).ni_0);
16
  assigns (*self).ni_0;
17
  */
18
  {
19
  VariableRateLimit_reset(&self->ni_0);
20
  }
21
  return;
22
}
23

    
24
void AltitudeControl_step (double AntEng_Out1_19, double AltCmd_Out1_29,
25
                           double Alt_Out1_39, double GsKts_Out1_49,
26
                           double hdot_Out1_59, double hdotChgRate_Out1_69, 
27
                           double (*altgammacmd_In1_661),
28
                           struct AltitudeControl_mem *self) {
29
  /*@ensures Ctrans_AltitudeControl((AntEng_Out1_19),
30
                                    (AltCmd_Out1_29),
31
                                    (Alt_Out1_39),
32
                                    (GsKts_Out1_49),
33
                                    (hdot_Out1_59),
34
                                    (hdotChgRate_Out1_69),
35
                                    (*altgammacmd_In1_661),
36
                                    \at(*self, Pre),
37
                                    (*self));
38
  assigns *altgammacmd_In1_661, *self;
39
  */
40
  {
41
  
42
  double Abs_Out1_144;
43
  double Kh_Out1_193;
44
  _Bool Logical_Operator_In1_197;
45
  _Bool Logical_Operator_Out1_198;
46
  double Saturation1_Out1_213;
47
  double Sum3_Out1_296;
48
  double Sum_Out1_286;
49
  _Bool Switch1_In2_312;
50
  double Switch1_Out1_314;
51
  _Bool Switch_In2_303;
52
  double Switch_Out1_305;
53
  double Variable_Limit_Saturation_0_Out1_509;
54
  double Variable__Rate_Limit_Out1_324;
55
  _Bool __AltitudeControl_1;
56
  _Bool __AltitudeControl_2;
57
  double k_Out1_585;
58
  double kts2fps_Out1_594;
59
  double r2d_Out1_603;
60
  
61
  
62
  /* Asserting trans predicate: locals are [Abs_Out1_144: real, Kh_Out1_193: real, Logical_Operator_In1_197: bool, Logical_Operator_Out1_198: bool, Saturation1_Out1_213: real, Sum3_Out1_296: real, Sum_Out1_286: real, Switch1_In2_312: bool, Switch1_Out1_314: real, Switch_In2_303: bool, Switch_Out1_305: real, Variable_Limit_Saturation_0_Out1_509: real, Variable__Rate_Limit_Out1_324: real, __AltitudeControl_1: bool, __AltitudeControl_2: bool, k_Out1_585: real, kts2fps_Out1_594: real, r2d_Out1_603: real] */
63
  /*@ensures \exists real Abs_Out1_144;
64
  \exists real Kh_Out1_193;
65
  \exists boolean Logical_Operator_In1_197;
66
  \exists boolean Logical_Operator_Out1_198;
67
  \exists real Saturation1_Out1_213;
68
  \exists real Sum3_Out1_296;
69
  \exists real Sum_Out1_286;
70
  \exists boolean Switch1_In2_312;
71
  \exists real Switch1_Out1_314;
72
  \exists boolean Switch_In2_303;
73
  \exists real Switch_Out1_305;
74
  \exists real Variable_Limit_Saturation_0_Out1_509;
75
  \exists real Variable__Rate_Limit_Out1_324;
76
  \exists boolean __AltitudeControl_1;
77
  \exists boolean __AltitudeControl_2;
78
  \exists real k_Out1_585;
79
  \exists real kts2fps_Out1_594;
80
  \exists real r2d_Out1_603;
81
  trans_AltitudeControl((AntEng_Out1_19),
82
                        (AltCmd_Out1_29),
83
                        (Alt_Out1_39),
84
                        (GsKts_Out1_49),
85
                        (hdot_Out1_59),
86
                        (hdotChgRate_Out1_69),
87
                        (*altgammacmd_In1_661),
88
                        \at(*self, Pre),
89
                        (*self),
90
                        (Abs_Out1_144),
91
                        (Kh_Out1_193),
92
                        (Logical_Operator_In1_197?\true:\false),
93
                        (Logical_Operator_Out1_198?\true:\false),
94
                        (Saturation1_Out1_213),
95
                        (Sum3_Out1_296),
96
                        (Sum_Out1_286),
97
                        (Switch1_In2_312?\true:\false),
98
                        (Switch1_Out1_314),
99
                        (Switch_In2_303?\true:\false),
100
                        (Switch_Out1_305),
101
                        (Variable_Limit_Saturation_0_Out1_509),
102
                        (Variable__Rate_Limit_Out1_324),
103
                        (__AltitudeControl_1?\true:\false),
104
                        (__AltitudeControl_2?\true:\false),
105
                        (k_Out1_585),
106
                        (kts2fps_Out1_594),
107
                        (r2d_Out1_603));
108
  assigns *altgammacmd_In1_661, *self, Abs_Out1_144, Kh_Out1_193,
109
          Logical_Operator_In1_197, Logical_Operator_Out1_198,
110
          Saturation1_Out1_213, Sum3_Out1_296, Sum_Out1_286, Switch1_In2_312,
111
          Switch1_Out1_314, Switch_In2_303, Switch_Out1_305,
112
          Variable_Limit_Saturation_0_Out1_509,
113
          Variable__Rate_Limit_Out1_324, __AltitudeControl_1,
114
          __AltitudeControl_2, k_Out1_585, kts2fps_Out1_594, r2d_Out1_603;
115
  */
116
  {
117
  
118
  /*@ensures \exists real Kh_Out1_193;
119
  \exists boolean Logical_Operator_In1_197;
120
  \exists boolean Logical_Operator_Out1_198;
121
  \exists real Saturation1_Out1_213;
122
  \exists real Sum3_Out1_296;
123
  \exists real Sum_Out1_286;
124
  \exists boolean Switch1_In2_312;
125
  \exists real Switch1_Out1_314;
126
  \exists boolean Switch_In2_303;
127
  \exists real Switch_Out1_305;
128
  \exists real Variable_Limit_Saturation_0_Out1_509;
129
  \exists real Variable__Rate_Limit_Out1_324;
130
  \exists boolean __AltitudeControl_1;
131
  \exists boolean __AltitudeControl_2;
132
  \exists real k_Out1_585;
133
  \exists real kts2fps_Out1_594;
134
  \exists real r2d_Out1_603;
135
  trans_AltitudeControl((AntEng_Out1_19),
136
                        (AltCmd_Out1_29),
137
                        (Alt_Out1_39),
138
                        (GsKts_Out1_49),
139
                        (hdot_Out1_59),
140
                        (hdotChgRate_Out1_69),
141
                        (*altgammacmd_In1_661),
142
                        \at(*self, Pre),
143
                        (*self),
144
                        (Abs_Out1_144),
145
                        (Kh_Out1_193),
146
                        (Logical_Operator_In1_197?\true:\false),
147
                        (Logical_Operator_Out1_198?\true:\false),
148
                        (Saturation1_Out1_213),
149
                        (Sum3_Out1_296),
150
                        (Sum_Out1_286),
151
                        (Switch1_In2_312?\true:\false),
152
                        (Switch1_Out1_314),
153
                        (Switch_In2_303?\true:\false),
154
                        (Switch_Out1_305),
155
                        (Variable_Limit_Saturation_0_Out1_509),
156
                        (Variable__Rate_Limit_Out1_324),
157
                        (__AltitudeControl_1?\true:\false),
158
                        (__AltitudeControl_2?\true:\false),
159
                        (k_Out1_585),
160
                        (kts2fps_Out1_594),
161
                        (r2d_Out1_603));
162
  assigns *altgammacmd_In1_661, *self, Abs_Out1_144, Kh_Out1_193,
163
          Logical_Operator_In1_197, Logical_Operator_Out1_198,
164
          Saturation1_Out1_213, Sum3_Out1_296, Sum_Out1_286, Switch1_In2_312,
165
          Switch1_Out1_314, Switch_In2_303, Switch_Out1_305,
166
          Variable_Limit_Saturation_0_Out1_509,
167
          Variable__Rate_Limit_Out1_324, __AltitudeControl_1,
168
          __AltitudeControl_2, k_Out1_585, kts2fps_Out1_594, r2d_Out1_603;
169
  */
170
  {
171
  
172
  /*@ensures \exists boolean Logical_Operator_In1_197;
173
  \exists boolean Logical_Operator_Out1_198;
174
  \exists real Saturation1_Out1_213;
175
  \exists real Sum3_Out1_296;
176
  \exists real Sum_Out1_286;
177
  \exists boolean Switch1_In2_312;
178
  \exists real Switch1_Out1_314;
179
  \exists boolean Switch_In2_303;
180
  \exists real Switch_Out1_305;
181
  \exists real Variable_Limit_Saturation_0_Out1_509;
182
  \exists real Variable__Rate_Limit_Out1_324;
183
  \exists boolean __AltitudeControl_1;
184
  \exists boolean __AltitudeControl_2;
185
  \exists real k_Out1_585;
186
  \exists real kts2fps_Out1_594;
187
  \exists real r2d_Out1_603;
188
  trans_AltitudeControl((AntEng_Out1_19),
189
                        (AltCmd_Out1_29),
190
                        (Alt_Out1_39),
191
                        (GsKts_Out1_49),
192
                        (hdot_Out1_59),
193
                        (hdotChgRate_Out1_69),
194
                        (*altgammacmd_In1_661),
195
                        \at(*self, Pre),
196
                        (*self),
197
                        (Abs_Out1_144),
198
                        (Kh_Out1_193),
199
                        (Logical_Operator_In1_197?\true:\false),
200
                        (Logical_Operator_Out1_198?\true:\false),
201
                        (Saturation1_Out1_213),
202
                        (Sum3_Out1_296),
203
                        (Sum_Out1_286),
204
                        (Switch1_In2_312?\true:\false),
205
                        (Switch1_Out1_314),
206
                        (Switch_In2_303?\true:\false),
207
                        (Switch_Out1_305),
208
                        (Variable_Limit_Saturation_0_Out1_509),
209
                        (Variable__Rate_Limit_Out1_324),
210
                        (__AltitudeControl_1?\true:\false),
211
                        (__AltitudeControl_2?\true:\false),
212
                        (k_Out1_585),
213
                        (kts2fps_Out1_594),
214
                        (r2d_Out1_603));
215
  assigns *altgammacmd_In1_661, *self, Abs_Out1_144, Kh_Out1_193,
216
          Logical_Operator_In1_197, Logical_Operator_Out1_198,
217
          Saturation1_Out1_213, Sum3_Out1_296, Sum_Out1_286, Switch1_In2_312,
218
          Switch1_Out1_314, Switch_In2_303, Switch_Out1_305,
219
          Variable_Limit_Saturation_0_Out1_509,
220
          Variable__Rate_Limit_Out1_324, __AltitudeControl_1,
221
          __AltitudeControl_2, k_Out1_585, kts2fps_Out1_594, r2d_Out1_603;
222
  */
223
  {
224
  
225
  /*@ensures \exists boolean Logical_Operator_Out1_198;
226
  \exists real Saturation1_Out1_213;
227
  \exists real Sum3_Out1_296;
228
  \exists real Sum_Out1_286;
229
  \exists boolean Switch1_In2_312;
230
  \exists real Switch1_Out1_314;
231
  \exists boolean Switch_In2_303;
232
  \exists real Switch_Out1_305;
233
  \exists real Variable_Limit_Saturation_0_Out1_509;
234
  \exists real Variable__Rate_Limit_Out1_324;
235
  \exists boolean __AltitudeControl_1;
236
  \exists boolean __AltitudeControl_2;
237
  \exists real k_Out1_585;
238
  \exists real kts2fps_Out1_594;
239
  \exists real r2d_Out1_603;
240
  trans_AltitudeControl((AntEng_Out1_19),
241
                        (AltCmd_Out1_29),
242
                        (Alt_Out1_39),
243
                        (GsKts_Out1_49),
244
                        (hdot_Out1_59),
245
                        (hdotChgRate_Out1_69),
246
                        (*altgammacmd_In1_661),
247
                        \at(*self, Pre),
248
                        (*self),
249
                        (Abs_Out1_144),
250
                        (Kh_Out1_193),
251
                        (Logical_Operator_In1_197?\true:\false),
252
                        (Logical_Operator_Out1_198?\true:\false),
253
                        (Saturation1_Out1_213),
254
                        (Sum3_Out1_296),
255
                        (Sum_Out1_286),
256
                        (Switch1_In2_312?\true:\false),
257
                        (Switch1_Out1_314),
258
                        (Switch_In2_303?\true:\false),
259
                        (Switch_Out1_305),
260
                        (Variable_Limit_Saturation_0_Out1_509),
261
                        (Variable__Rate_Limit_Out1_324),
262
                        (__AltitudeControl_1?\true:\false),
263
                        (__AltitudeControl_2?\true:\false),
264
                        (k_Out1_585),
265
                        (kts2fps_Out1_594),
266
                        (r2d_Out1_603));
267
  assigns *altgammacmd_In1_661, *self, Abs_Out1_144, Kh_Out1_193,
268
          Logical_Operator_In1_197, Logical_Operator_Out1_198,
269
          Saturation1_Out1_213, Sum3_Out1_296, Sum_Out1_286, Switch1_In2_312,
270
          Switch1_Out1_314, Switch_In2_303, Switch_Out1_305,
271
          Variable_Limit_Saturation_0_Out1_509,
272
          Variable__Rate_Limit_Out1_324, __AltitudeControl_1,
273
          __AltitudeControl_2, k_Out1_585, kts2fps_Out1_594, r2d_Out1_603;
274
  */
275
  {
276
  
277
  /*@ensures \exists real Saturation1_Out1_213;
278
  \exists real Sum3_Out1_296;
279
  \exists real Sum_Out1_286;
280
  \exists boolean Switch1_In2_312;
281
  \exists real Switch1_Out1_314;
282
  \exists boolean Switch_In2_303;
283
  \exists real Switch_Out1_305;
284
  \exists real Variable_Limit_Saturation_0_Out1_509;
285
  \exists real Variable__Rate_Limit_Out1_324;
286
  \exists boolean __AltitudeControl_1;
287
  \exists boolean __AltitudeControl_2;
288
  \exists real k_Out1_585;
289
  \exists real kts2fps_Out1_594;
290
  \exists real r2d_Out1_603;
291
  trans_AltitudeControl((AntEng_Out1_19),
292
                        (AltCmd_Out1_29),
293
                        (Alt_Out1_39),
294
                        (GsKts_Out1_49),
295
                        (hdot_Out1_59),
296
                        (hdotChgRate_Out1_69),
297
                        (*altgammacmd_In1_661),
298
                        \at(*self, Pre),
299
                        (*self),
300
                        (Abs_Out1_144),
301
                        (Kh_Out1_193),
302
                        (Logical_Operator_In1_197?\true:\false),
303
                        (Logical_Operator_Out1_198?\true:\false),
304
                        (Saturation1_Out1_213),
305
                        (Sum3_Out1_296),
306
                        (Sum_Out1_286),
307
                        (Switch1_In2_312?\true:\false),
308
                        (Switch1_Out1_314),
309
                        (Switch_In2_303?\true:\false),
310
                        (Switch_Out1_305),
311
                        (Variable_Limit_Saturation_0_Out1_509),
312
                        (Variable__Rate_Limit_Out1_324),
313
                        (__AltitudeControl_1?\true:\false),
314
                        (__AltitudeControl_2?\true:\false),
315
                        (k_Out1_585),
316
                        (kts2fps_Out1_594),
317
                        (r2d_Out1_603));
318
  assigns *altgammacmd_In1_661, *self, Abs_Out1_144, Kh_Out1_193,
319
          Logical_Operator_In1_197, Logical_Operator_Out1_198,
320
          Saturation1_Out1_213, Sum3_Out1_296, Sum_Out1_286, Switch1_In2_312,
321
          Switch1_Out1_314, Switch_In2_303, Switch_Out1_305,
322
          Variable_Limit_Saturation_0_Out1_509,
323
          Variable__Rate_Limit_Out1_324, __AltitudeControl_1,
324
          __AltitudeControl_2, k_Out1_585, kts2fps_Out1_594, r2d_Out1_603;
325
  */
326
  {
327
  
328
  /*@ensures \exists real Sum3_Out1_296;
329
  \exists real Sum_Out1_286;
330
  \exists boolean Switch1_In2_312;
331
  \exists real Switch1_Out1_314;
332
  \exists boolean Switch_In2_303;
333
  \exists real Switch_Out1_305;
334
  \exists real Variable_Limit_Saturation_0_Out1_509;
335
  \exists real Variable__Rate_Limit_Out1_324;
336
  \exists boolean __AltitudeControl_1;
337
  \exists boolean __AltitudeControl_2;
338
  \exists real k_Out1_585;
339
  \exists real kts2fps_Out1_594;
340
  \exists real r2d_Out1_603;
341
  trans_AltitudeControl((AntEng_Out1_19),
342
                        (AltCmd_Out1_29),
343
                        (Alt_Out1_39),
344
                        (GsKts_Out1_49),
345
                        (hdot_Out1_59),
346
                        (hdotChgRate_Out1_69),
347
                        (*altgammacmd_In1_661),
348
                        \at(*self, Pre),
349
                        (*self),
350
                        (Abs_Out1_144),
351
                        (Kh_Out1_193),
352
                        (Logical_Operator_In1_197?\true:\false),
353
                        (Logical_Operator_Out1_198?\true:\false),
354
                        (Saturation1_Out1_213),
355
                        (Sum3_Out1_296),
356
                        (Sum_Out1_286),
357
                        (Switch1_In2_312?\true:\false),
358
                        (Switch1_Out1_314),
359
                        (Switch_In2_303?\true:\false),
360
                        (Switch_Out1_305),
361
                        (Variable_Limit_Saturation_0_Out1_509),
362
                        (Variable__Rate_Limit_Out1_324),
363
                        (__AltitudeControl_1?\true:\false),
364
                        (__AltitudeControl_2?\true:\false),
365
                        (k_Out1_585),
366
                        (kts2fps_Out1_594),
367
                        (r2d_Out1_603));
368
  assigns *altgammacmd_In1_661, *self, Abs_Out1_144, Kh_Out1_193,
369
          Logical_Operator_In1_197, Logical_Operator_Out1_198,
370
          Saturation1_Out1_213, Sum3_Out1_296, Sum_Out1_286, Switch1_In2_312,
371
          Switch1_Out1_314, Switch_In2_303, Switch_Out1_305,
372
          Variable_Limit_Saturation_0_Out1_509,
373
          Variable__Rate_Limit_Out1_324, __AltitudeControl_1,
374
          __AltitudeControl_2, k_Out1_585, kts2fps_Out1_594, r2d_Out1_603;
375
  */
376
  {
377
  
378
  /*@ensures \exists real Sum_Out1_286;
379
  \exists boolean Switch1_In2_312;
380
  \exists real Switch1_Out1_314;
381
  \exists boolean Switch_In2_303;
382
  \exists real Switch_Out1_305;
383
  \exists real Variable_Limit_Saturation_0_Out1_509;
384
  \exists real Variable__Rate_Limit_Out1_324;
385
  \exists boolean __AltitudeControl_1;
386
  \exists boolean __AltitudeControl_2;
387
  \exists real k_Out1_585;
388
  \exists real kts2fps_Out1_594;
389
  \exists real r2d_Out1_603;
390
  trans_AltitudeControl((AntEng_Out1_19),
391
                        (AltCmd_Out1_29),
392
                        (Alt_Out1_39),
393
                        (GsKts_Out1_49),
394
                        (hdot_Out1_59),
395
                        (hdotChgRate_Out1_69),
396
                        (*altgammacmd_In1_661),
397
                        \at(*self, Pre),
398
                        (*self),
399
                        (Abs_Out1_144),
400
                        (Kh_Out1_193),
401
                        (Logical_Operator_In1_197?\true:\false),
402
                        (Logical_Operator_Out1_198?\true:\false),
403
                        (Saturation1_Out1_213),
404
                        (Sum3_Out1_296),
405
                        (Sum_Out1_286),
406
                        (Switch1_In2_312?\true:\false),
407
                        (Switch1_Out1_314),
408
                        (Switch_In2_303?\true:\false),
409
                        (Switch_Out1_305),
410
                        (Variable_Limit_Saturation_0_Out1_509),
411
                        (Variable__Rate_Limit_Out1_324),
412
                        (__AltitudeControl_1?\true:\false),
413
                        (__AltitudeControl_2?\true:\false),
414
                        (k_Out1_585),
415
                        (kts2fps_Out1_594),
416
                        (r2d_Out1_603));
417
  assigns *altgammacmd_In1_661, *self, Abs_Out1_144, Kh_Out1_193,
418
          Logical_Operator_In1_197, Logical_Operator_Out1_198,
419
          Saturation1_Out1_213, Sum3_Out1_296, Sum_Out1_286, Switch1_In2_312,
420
          Switch1_Out1_314, Switch_In2_303, Switch_Out1_305,
421
          Variable_Limit_Saturation_0_Out1_509,
422
          Variable__Rate_Limit_Out1_324, __AltitudeControl_1,
423
          __AltitudeControl_2, k_Out1_585, kts2fps_Out1_594, r2d_Out1_603;
424
  */
425
  {
426
  
427
  /*@ensures \exists boolean Switch1_In2_312;
428
  \exists real Switch1_Out1_314;
429
  \exists boolean Switch_In2_303;
430
  \exists real Switch_Out1_305;
431
  \exists real Variable_Limit_Saturation_0_Out1_509;
432
  \exists real Variable__Rate_Limit_Out1_324;
433
  \exists boolean __AltitudeControl_1;
434
  \exists boolean __AltitudeControl_2;
435
  \exists real k_Out1_585;
436
  \exists real kts2fps_Out1_594;
437
  \exists real r2d_Out1_603;
438
  trans_AltitudeControl((AntEng_Out1_19),
439
                        (AltCmd_Out1_29),
440
                        (Alt_Out1_39),
441
                        (GsKts_Out1_49),
442
                        (hdot_Out1_59),
443
                        (hdotChgRate_Out1_69),
444
                        (*altgammacmd_In1_661),
445
                        \at(*self, Pre),
446
                        (*self),
447
                        (Abs_Out1_144),
448
                        (Kh_Out1_193),
449
                        (Logical_Operator_In1_197?\true:\false),
450
                        (Logical_Operator_Out1_198?\true:\false),
451
                        (Saturation1_Out1_213),
452
                        (Sum3_Out1_296),
453
                        (Sum_Out1_286),
454
                        (Switch1_In2_312?\true:\false),
455
                        (Switch1_Out1_314),
456
                        (Switch_In2_303?\true:\false),
457
                        (Switch_Out1_305),
458
                        (Variable_Limit_Saturation_0_Out1_509),
459
                        (Variable__Rate_Limit_Out1_324),
460
                        (__AltitudeControl_1?\true:\false),
461
                        (__AltitudeControl_2?\true:\false),
462
                        (k_Out1_585),
463
                        (kts2fps_Out1_594),
464
                        (r2d_Out1_603));
465
  assigns *altgammacmd_In1_661, *self, Abs_Out1_144, Kh_Out1_193,
466
          Logical_Operator_In1_197, Logical_Operator_Out1_198,
467
          Saturation1_Out1_213, Sum3_Out1_296, Sum_Out1_286, Switch1_In2_312,
468
          Switch1_Out1_314, Switch_In2_303, Switch_Out1_305,
469
          Variable_Limit_Saturation_0_Out1_509,
470
          Variable__Rate_Limit_Out1_324, __AltitudeControl_1,
471
          __AltitudeControl_2, k_Out1_585, kts2fps_Out1_594, r2d_Out1_603;
472
  */
473
  {
474
  
475
  /*@ensures \exists real Switch1_Out1_314;
476
  \exists boolean Switch_In2_303;
477
  \exists real Switch_Out1_305;
478
  \exists real Variable_Limit_Saturation_0_Out1_509;
479
  \exists real Variable__Rate_Limit_Out1_324;
480
  \exists boolean __AltitudeControl_1;
481
  \exists boolean __AltitudeControl_2;
482
  \exists real k_Out1_585;
483
  \exists real kts2fps_Out1_594;
484
  \exists real r2d_Out1_603;
485
  trans_AltitudeControl((AntEng_Out1_19),
486
                        (AltCmd_Out1_29),
487
                        (Alt_Out1_39),
488
                        (GsKts_Out1_49),
489
                        (hdot_Out1_59),
490
                        (hdotChgRate_Out1_69),
491
                        (*altgammacmd_In1_661),
492
                        \at(*self, Pre),
493
                        (*self),
494
                        (Abs_Out1_144),
495
                        (Kh_Out1_193),
496
                        (Logical_Operator_In1_197?\true:\false),
497
                        (Logical_Operator_Out1_198?\true:\false),
498
                        (Saturation1_Out1_213),
499
                        (Sum3_Out1_296),
500
                        (Sum_Out1_286),
501
                        (Switch1_In2_312?\true:\false),
502
                        (Switch1_Out1_314),
503
                        (Switch_In2_303?\true:\false),
504
                        (Switch_Out1_305),
505
                        (Variable_Limit_Saturation_0_Out1_509),
506
                        (Variable__Rate_Limit_Out1_324),
507
                        (__AltitudeControl_1?\true:\false),
508
                        (__AltitudeControl_2?\true:\false),
509
                        (k_Out1_585),
510
                        (kts2fps_Out1_594),
511
                        (r2d_Out1_603));
512
  assigns *altgammacmd_In1_661, *self, Abs_Out1_144, Kh_Out1_193,
513
          Logical_Operator_In1_197, Logical_Operator_Out1_198,
514
          Saturation1_Out1_213, Sum3_Out1_296, Sum_Out1_286, Switch1_In2_312,
515
          Switch1_Out1_314, Switch_In2_303, Switch_Out1_305,
516
          Variable_Limit_Saturation_0_Out1_509,
517
          Variable__Rate_Limit_Out1_324, __AltitudeControl_1,
518
          __AltitudeControl_2, k_Out1_585, kts2fps_Out1_594, r2d_Out1_603;
519
  */
520
  {
521
  
522
  /*@ensures \exists boolean Switch_In2_303;
523
  \exists real Switch_Out1_305;
524
  \exists real Variable_Limit_Saturation_0_Out1_509;
525
  \exists real Variable__Rate_Limit_Out1_324;
526
  \exists boolean __AltitudeControl_1;
527
  \exists boolean __AltitudeControl_2;
528
  \exists real k_Out1_585;
529
  \exists real kts2fps_Out1_594;
530
  \exists real r2d_Out1_603;
531
  trans_AltitudeControl((AntEng_Out1_19),
532
                        (AltCmd_Out1_29),
533
                        (Alt_Out1_39),
534
                        (GsKts_Out1_49),
535
                        (hdot_Out1_59),
536
                        (hdotChgRate_Out1_69),
537
                        (*altgammacmd_In1_661),
538
                        \at(*self, Pre),
539
                        (*self),
540
                        (Abs_Out1_144),
541
                        (Kh_Out1_193),
542
                        (Logical_Operator_In1_197?\true:\false),
543
                        (Logical_Operator_Out1_198?\true:\false),
544
                        (Saturation1_Out1_213),
545
                        (Sum3_Out1_296),
546
                        (Sum_Out1_286),
547
                        (Switch1_In2_312?\true:\false),
548
                        (Switch1_Out1_314),
549
                        (Switch_In2_303?\true:\false),
550
                        (Switch_Out1_305),
551
                        (Variable_Limit_Saturation_0_Out1_509),
552
                        (Variable__Rate_Limit_Out1_324),
553
                        (__AltitudeControl_1?\true:\false),
554
                        (__AltitudeControl_2?\true:\false),
555
                        (k_Out1_585),
556
                        (kts2fps_Out1_594),
557
                        (r2d_Out1_603));
558
  assigns *altgammacmd_In1_661, *self, Abs_Out1_144, Kh_Out1_193,
559
          Logical_Operator_In1_197, Logical_Operator_Out1_198,
560
          Saturation1_Out1_213, Sum3_Out1_296, Sum_Out1_286, Switch1_In2_312,
561
          Switch1_Out1_314, Switch_In2_303, Switch_Out1_305,
562
          Variable_Limit_Saturation_0_Out1_509,
563
          Variable__Rate_Limit_Out1_324, __AltitudeControl_1,
564
          __AltitudeControl_2, k_Out1_585, kts2fps_Out1_594, r2d_Out1_603;
565
  */
566
  {
567
  
568
  /*@ensures \exists real Switch_Out1_305;
569
  \exists real Variable_Limit_Saturation_0_Out1_509;
570
  \exists real Variable__Rate_Limit_Out1_324;
571
  \exists boolean __AltitudeControl_1;
572
  \exists boolean __AltitudeControl_2;
573
  \exists real k_Out1_585;
574
  \exists real kts2fps_Out1_594;
575
  \exists real r2d_Out1_603;
576
  trans_AltitudeControl((AntEng_Out1_19),
577
                        (AltCmd_Out1_29),
578
                        (Alt_Out1_39),
579
                        (GsKts_Out1_49),
580
                        (hdot_Out1_59),
581
                        (hdotChgRate_Out1_69),
582
                        (*altgammacmd_In1_661),
583
                        \at(*self, Pre),
584
                        (*self),
585
                        (Abs_Out1_144),
586
                        (Kh_Out1_193),
587
                        (Logical_Operator_In1_197?\true:\false),
588
                        (Logical_Operator_Out1_198?\true:\false),
589
                        (Saturation1_Out1_213),
590
                        (Sum3_Out1_296),
591
                        (Sum_Out1_286),
592
                        (Switch1_In2_312?\true:\false),
593
                        (Switch1_Out1_314),
594
                        (Switch_In2_303?\true:\false),
595
                        (Switch_Out1_305),
596
                        (Variable_Limit_Saturation_0_Out1_509),
597
                        (Variable__Rate_Limit_Out1_324),
598
                        (__AltitudeControl_1?\true:\false),
599
                        (__AltitudeControl_2?\true:\false),
600
                        (k_Out1_585),
601
                        (kts2fps_Out1_594),
602
                        (r2d_Out1_603));
603
  assigns *altgammacmd_In1_661, *self, Abs_Out1_144, Kh_Out1_193,
604
          Logical_Operator_In1_197, Logical_Operator_Out1_198,
605
          Saturation1_Out1_213, Sum3_Out1_296, Sum_Out1_286, Switch1_In2_312,
606
          Switch1_Out1_314, Switch_In2_303, Switch_Out1_305,
607
          Variable_Limit_Saturation_0_Out1_509,
608
          Variable__Rate_Limit_Out1_324, __AltitudeControl_1,
609
          __AltitudeControl_2, k_Out1_585, kts2fps_Out1_594, r2d_Out1_603;
610
  */
611
  {
612
  
613
  /*@ensures \exists real Variable_Limit_Saturation_0_Out1_509;
614
  \exists real Variable__Rate_Limit_Out1_324;
615
  \exists boolean __AltitudeControl_1;
616
  \exists boolean __AltitudeControl_2;
617
  \exists real k_Out1_585;
618
  \exists real kts2fps_Out1_594;
619
  \exists real r2d_Out1_603;
620
  trans_AltitudeControl((AntEng_Out1_19),
621
                        (AltCmd_Out1_29),
622
                        (Alt_Out1_39),
623
                        (GsKts_Out1_49),
624
                        (hdot_Out1_59),
625
                        (hdotChgRate_Out1_69),
626
                        (*altgammacmd_In1_661),
627
                        \at(*self, Pre),
628
                        (*self),
629
                        (Abs_Out1_144),
630
                        (Kh_Out1_193),
631
                        (Logical_Operator_In1_197?\true:\false),
632
                        (Logical_Operator_Out1_198?\true:\false),
633
                        (Saturation1_Out1_213),
634
                        (Sum3_Out1_296),
635
                        (Sum_Out1_286),
636
                        (Switch1_In2_312?\true:\false),
637
                        (Switch1_Out1_314),
638
                        (Switch_In2_303?\true:\false),
639
                        (Switch_Out1_305),
640
                        (Variable_Limit_Saturation_0_Out1_509),
641
                        (Variable__Rate_Limit_Out1_324),
642
                        (__AltitudeControl_1?\true:\false),
643
                        (__AltitudeControl_2?\true:\false),
644
                        (k_Out1_585),
645
                        (kts2fps_Out1_594),
646
                        (r2d_Out1_603));
647
  assigns *altgammacmd_In1_661, *self, Abs_Out1_144, Kh_Out1_193,
648
          Logical_Operator_In1_197, Logical_Operator_Out1_198,
649
          Saturation1_Out1_213, Sum3_Out1_296, Sum_Out1_286, Switch1_In2_312,
650
          Switch1_Out1_314, Switch_In2_303, Switch_Out1_305,
651
          Variable_Limit_Saturation_0_Out1_509,
652
          Variable__Rate_Limit_Out1_324, __AltitudeControl_1,
653
          __AltitudeControl_2, k_Out1_585, kts2fps_Out1_594, r2d_Out1_603;
654
  */
655
  {
656
  
657
  /*@ensures \exists real Variable__Rate_Limit_Out1_324;
658
  \exists boolean __AltitudeControl_1;
659
  \exists boolean __AltitudeControl_2;
660
  \exists real k_Out1_585;
661
  \exists real kts2fps_Out1_594;
662
  \exists real r2d_Out1_603;
663
  trans_AltitudeControl((AntEng_Out1_19),
664
                        (AltCmd_Out1_29),
665
                        (Alt_Out1_39),
666
                        (GsKts_Out1_49),
667
                        (hdot_Out1_59),
668
                        (hdotChgRate_Out1_69),
669
                        (*altgammacmd_In1_661),
670
                        \at(*self, Pre),
671
                        (*self),
672
                        (Abs_Out1_144),
673
                        (Kh_Out1_193),
674
                        (Logical_Operator_In1_197?\true:\false),
675
                        (Logical_Operator_Out1_198?\true:\false),
676
                        (Saturation1_Out1_213),
677
                        (Sum3_Out1_296),
678
                        (Sum_Out1_286),
679
                        (Switch1_In2_312?\true:\false),
680
                        (Switch1_Out1_314),
681
                        (Switch_In2_303?\true:\false),
682
                        (Switch_Out1_305),
683
                        (Variable_Limit_Saturation_0_Out1_509),
684
                        (Variable__Rate_Limit_Out1_324),
685
                        (__AltitudeControl_1?\true:\false),
686
                        (__AltitudeControl_2?\true:\false),
687
                        (k_Out1_585),
688
                        (kts2fps_Out1_594),
689
                        (r2d_Out1_603));
690
  assigns *altgammacmd_In1_661, *self, Abs_Out1_144, Kh_Out1_193,
691
          Logical_Operator_In1_197, Logical_Operator_Out1_198,
692
          Saturation1_Out1_213, Sum3_Out1_296, Sum_Out1_286, Switch1_In2_312,
693
          Switch1_Out1_314, Switch_In2_303, Switch_Out1_305,
694
          Variable_Limit_Saturation_0_Out1_509,
695
          Variable__Rate_Limit_Out1_324, __AltitudeControl_1,
696
          __AltitudeControl_2, k_Out1_585, kts2fps_Out1_594, r2d_Out1_603;
697
  */
698
  {
699
  
700
  /*@ensures \exists boolean __AltitudeControl_1;
701
  \exists boolean __AltitudeControl_2;
702
  \exists real k_Out1_585;
703
  \exists real kts2fps_Out1_594;
704
  \exists real r2d_Out1_603;
705
  trans_AltitudeControl((AntEng_Out1_19),
706
                        (AltCmd_Out1_29),
707
                        (Alt_Out1_39),
708
                        (GsKts_Out1_49),
709
                        (hdot_Out1_59),
710
                        (hdotChgRate_Out1_69),
711
                        (*altgammacmd_In1_661),
712
                        \at(*self, Pre),
713
                        (*self),
714
                        (Abs_Out1_144),
715
                        (Kh_Out1_193),
716
                        (Logical_Operator_In1_197?\true:\false),
717
                        (Logical_Operator_Out1_198?\true:\false),
718
                        (Saturation1_Out1_213),
719
                        (Sum3_Out1_296),
720
                        (Sum_Out1_286),
721
                        (Switch1_In2_312?\true:\false),
722
                        (Switch1_Out1_314),
723
                        (Switch_In2_303?\true:\false),
724
                        (Switch_Out1_305),
725
                        (Variable_Limit_Saturation_0_Out1_509),
726
                        (Variable__Rate_Limit_Out1_324),
727
                        (__AltitudeControl_1?\true:\false),
728
                        (__AltitudeControl_2?\true:\false),
729
                        (k_Out1_585),
730
                        (kts2fps_Out1_594),
731
                        (r2d_Out1_603));
732
  assigns *altgammacmd_In1_661, *self, Abs_Out1_144, Kh_Out1_193,
733
          Logical_Operator_In1_197, Logical_Operator_Out1_198,
734
          Saturation1_Out1_213, Sum3_Out1_296, Sum_Out1_286, Switch1_In2_312,
735
          Switch1_Out1_314, Switch_In2_303, Switch_Out1_305,
736
          Variable_Limit_Saturation_0_Out1_509,
737
          Variable__Rate_Limit_Out1_324, __AltitudeControl_1,
738
          __AltitudeControl_2, k_Out1_585, kts2fps_Out1_594, r2d_Out1_603;
739
  */
740
  {
741
  
742
  /*@ensures \exists boolean __AltitudeControl_2;
743
  \exists real k_Out1_585;
744
  \exists real kts2fps_Out1_594;
745
  \exists real r2d_Out1_603;
746
  trans_AltitudeControl((AntEng_Out1_19),
747
                        (AltCmd_Out1_29),
748
                        (Alt_Out1_39),
749
                        (GsKts_Out1_49),
750
                        (hdot_Out1_59),
751
                        (hdotChgRate_Out1_69),
752
                        (*altgammacmd_In1_661),
753
                        \at(*self, Pre),
754
                        (*self),
755
                        (Abs_Out1_144),
756
                        (Kh_Out1_193),
757
                        (Logical_Operator_In1_197?\true:\false),
758
                        (Logical_Operator_Out1_198?\true:\false),
759
                        (Saturation1_Out1_213),
760
                        (Sum3_Out1_296),
761
                        (Sum_Out1_286),
762
                        (Switch1_In2_312?\true:\false),
763
                        (Switch1_Out1_314),
764
                        (Switch_In2_303?\true:\false),
765
                        (Switch_Out1_305),
766
                        (Variable_Limit_Saturation_0_Out1_509),
767
                        (Variable__Rate_Limit_Out1_324),
768
                        (__AltitudeControl_1?\true:\false),
769
                        (__AltitudeControl_2?\true:\false),
770
                        (k_Out1_585),
771
                        (kts2fps_Out1_594),
772
                        (r2d_Out1_603));
773
  assigns *altgammacmd_In1_661, *self, Abs_Out1_144, Kh_Out1_193,
774
          Logical_Operator_In1_197, Logical_Operator_Out1_198,
775
          Saturation1_Out1_213, Sum3_Out1_296, Sum_Out1_286, Switch1_In2_312,
776
          Switch1_Out1_314, Switch_In2_303, Switch_Out1_305,
777
          Variable_Limit_Saturation_0_Out1_509,
778
          Variable__Rate_Limit_Out1_324, __AltitudeControl_1,
779
          __AltitudeControl_2, k_Out1_585, kts2fps_Out1_594, r2d_Out1_603;
780
  */
781
  {
782
  
783
  /*@ensures \exists real k_Out1_585;
784
  \exists real kts2fps_Out1_594;
785
  \exists real r2d_Out1_603;
786
  trans_AltitudeControl((AntEng_Out1_19),
787
                        (AltCmd_Out1_29),
788
                        (Alt_Out1_39),
789
                        (GsKts_Out1_49),
790
                        (hdot_Out1_59),
791
                        (hdotChgRate_Out1_69),
792
                        (*altgammacmd_In1_661),
793
                        \at(*self, Pre),
794
                        (*self),
795
                        (Abs_Out1_144),
796
                        (Kh_Out1_193),
797
                        (Logical_Operator_In1_197?\true:\false),
798
                        (Logical_Operator_Out1_198?\true:\false),
799
                        (Saturation1_Out1_213),
800
                        (Sum3_Out1_296),
801
                        (Sum_Out1_286),
802
                        (Switch1_In2_312?\true:\false),
803
                        (Switch1_Out1_314),
804
                        (Switch_In2_303?\true:\false),
805
                        (Switch_Out1_305),
806
                        (Variable_Limit_Saturation_0_Out1_509),
807
                        (Variable__Rate_Limit_Out1_324),
808
                        (__AltitudeControl_1?\true:\false),
809
                        (__AltitudeControl_2?\true:\false),
810
                        (k_Out1_585),
811
                        (kts2fps_Out1_594),
812
                        (r2d_Out1_603));
813
  assigns *altgammacmd_In1_661, *self, Abs_Out1_144, Kh_Out1_193,
814
          Logical_Operator_In1_197, Logical_Operator_Out1_198,
815
          Saturation1_Out1_213, Sum3_Out1_296, Sum_Out1_286, Switch1_In2_312,
816
          Switch1_Out1_314, Switch_In2_303, Switch_Out1_305,
817
          Variable_Limit_Saturation_0_Out1_509,
818
          Variable__Rate_Limit_Out1_324, __AltitudeControl_1,
819
          __AltitudeControl_2, k_Out1_585, kts2fps_Out1_594, r2d_Out1_603;
820
  */
821
  {
822
  
823
  /*@ensures \exists real kts2fps_Out1_594;
824
  \exists real r2d_Out1_603;
825
  trans_AltitudeControl((AntEng_Out1_19),
826
                        (AltCmd_Out1_29),
827
                        (Alt_Out1_39),
828
                        (GsKts_Out1_49),
829
                        (hdot_Out1_59),
830
                        (hdotChgRate_Out1_69),
831
                        (*altgammacmd_In1_661),
832
                        \at(*self, Pre),
833
                        (*self),
834
                        (Abs_Out1_144),
835
                        (Kh_Out1_193),
836
                        (Logical_Operator_In1_197?\true:\false),
837
                        (Logical_Operator_Out1_198?\true:\false),
838
                        (Saturation1_Out1_213),
839
                        (Sum3_Out1_296),
840
                        (Sum_Out1_286),
841
                        (Switch1_In2_312?\true:\false),
842
                        (Switch1_Out1_314),
843
                        (Switch_In2_303?\true:\false),
844
                        (Switch_Out1_305),
845
                        (Variable_Limit_Saturation_0_Out1_509),
846
                        (Variable__Rate_Limit_Out1_324),
847
                        (__AltitudeControl_1?\true:\false),
848
                        (__AltitudeControl_2?\true:\false),
849
                        (k_Out1_585),
850
                        (kts2fps_Out1_594),
851
                        (r2d_Out1_603));
852
  assigns *altgammacmd_In1_661, *self, Abs_Out1_144, Kh_Out1_193,
853
          Logical_Operator_In1_197, Logical_Operator_Out1_198,
854
          Saturation1_Out1_213, Sum3_Out1_296, Sum_Out1_286, Switch1_In2_312,
855
          Switch1_Out1_314, Switch_In2_303, Switch_Out1_305,
856
          Variable_Limit_Saturation_0_Out1_509,
857
          Variable__Rate_Limit_Out1_324, __AltitudeControl_1,
858
          __AltitudeControl_2, k_Out1_585, kts2fps_Out1_594, r2d_Out1_603;
859
  */
860
  {
861
  
862
  /*@ensures \exists real r2d_Out1_603;
863
  trans_AltitudeControl((AntEng_Out1_19),
864
                        (AltCmd_Out1_29),
865
                        (Alt_Out1_39),
866
                        (GsKts_Out1_49),
867
                        (hdot_Out1_59),
868
                        (hdotChgRate_Out1_69),
869
                        (*altgammacmd_In1_661),
870
                        \at(*self, Pre),
871
                        (*self),
872
                        (Abs_Out1_144),
873
                        (Kh_Out1_193),
874
                        (Logical_Operator_In1_197?\true:\false),
875
                        (Logical_Operator_Out1_198?\true:\false),
876
                        (Saturation1_Out1_213),
877
                        (Sum3_Out1_296),
878
                        (Sum_Out1_286),
879
                        (Switch1_In2_312?\true:\false),
880
                        (Switch1_Out1_314),
881
                        (Switch_In2_303?\true:\false),
882
                        (Switch_Out1_305),
883
                        (Variable_Limit_Saturation_0_Out1_509),
884
                        (Variable__Rate_Limit_Out1_324),
885
                        (__AltitudeControl_1?\true:\false),
886
                        (__AltitudeControl_2?\true:\false),
887
                        (k_Out1_585),
888
                        (kts2fps_Out1_594),
889
                        (r2d_Out1_603));
890
  assigns *altgammacmd_In1_661, *self, Abs_Out1_144, Kh_Out1_193,
891
          Logical_Operator_In1_197, Logical_Operator_Out1_198,
892
          Saturation1_Out1_213, Sum3_Out1_296, Sum_Out1_286, Switch1_In2_312,
893
          Switch1_Out1_314, Switch_In2_303, Switch_Out1_305,
894
          Variable_Limit_Saturation_0_Out1_509,
895
          Variable__Rate_Limit_Out1_324, __AltitudeControl_1,
896
          __AltitudeControl_2, k_Out1_585, kts2fps_Out1_594, r2d_Out1_603;
897
  */
898
  {
899
  
900
  /*@ensures trans_AltitudeControl((AntEng_Out1_19),
901
                                   (AltCmd_Out1_29),
902
                                   (Alt_Out1_39),
903
                                   (GsKts_Out1_49),
904
                                   (hdot_Out1_59),
905
                                   (hdotChgRate_Out1_69),
906
                                   (*altgammacmd_In1_661),
907
                                   \at(*self, Pre),
908
                                   (*self),
909
                                   (Abs_Out1_144),
910
                                   (Kh_Out1_193),
911
                                   (Logical_Operator_In1_197?\true:\false),
912
                                   (Logical_Operator_Out1_198?\true:\false),
913
                                   (Saturation1_Out1_213),
914
                                   (Sum3_Out1_296),
915
                                   (Sum_Out1_286),
916
                                   (Switch1_In2_312?\true:\false),
917
                                   (Switch1_Out1_314),
918
                                   (Switch_In2_303?\true:\false),
919
                                   (Switch_Out1_305),
920
                                   (Variable_Limit_Saturation_0_Out1_509),
921
                                   (Variable__Rate_Limit_Out1_324),
922
                                   (__AltitudeControl_1?\true:\false),
923
                                   (__AltitudeControl_2?\true:\false),
924
                                   (k_Out1_585),
925
                                   (kts2fps_Out1_594),
926
                                   (r2d_Out1_603));
927
  assigns *altgammacmd_In1_661, *self, Abs_Out1_144, Kh_Out1_193,
928
          Logical_Operator_In1_197, Logical_Operator_Out1_198,
929
          Saturation1_Out1_213, Sum3_Out1_296, Sum_Out1_286, Switch1_In2_312,
930
          Switch1_Out1_314, Switch_In2_303, Switch_Out1_305,
931
          Variable_Limit_Saturation_0_Out1_509,
932
          Variable__Rate_Limit_Out1_324, __AltitudeControl_1,
933
          __AltitudeControl_2, k_Out1_585, kts2fps_Out1_594, r2d_Out1_603;
934
  */
935
  {
936
  
937
  
938
  /*@
939
  ensures ((__AltitudeControl_1?\true:\false) == ((hdot_Out1_59) < 0.));
940
  assigns __AltitudeControl_1;
941
  */
942
  {
943
  __AltitudeControl_1 = (hdot_Out1_59 < 0.);
944
  }
945
  /*@
946
  ensures ((Abs_Out1_144) == ((__AltitudeControl_1?\true:\false)?((- (hdot_Out1_59))):((hdot_Out1_59))));
947
  assigns Abs_Out1_144;
948
  */
949
  {
950
  Abs_Out1_144 = (__AltitudeControl_1?((- hdot_Out1_59)):(hdot_Out1_59));
951
  }
952
  /*@
953
  ensures ((Sum3_Out1_296) == ((Abs_Out1_144) + 10.));
954
  assigns Sum3_Out1_296;
955
  */
956
  {
957
  Sum3_Out1_296 = (Abs_Out1_144 + 10.);
958
  }
959
  /*@
960
  ensures ((k_Out1_585) == (- (Sum3_Out1_296)));
961
  assigns k_Out1_585;
962
  */
963
  {
964
  k_Out1_585 = (- Sum3_Out1_296);
965
  }
966
  /*@
967
  ensures ((__AltitudeControl_2?\true:\false) == ((AntEng_Out1_19) == 0.));
968
  assigns __AltitudeControl_2;
969
  */
970
  {
971
  __AltitudeControl_2 = (AntEng_Out1_19 == 0.);
972
  }
973
  /*@
974
  ensures ((!(Logical_Operator_In1_197?\true:\false)) == (!((__AltitudeControl_2?\true:\false)?(0):(1))));
975
  assigns Logical_Operator_In1_197;
976
  */
977
  {
978
  Logical_Operator_In1_197 = (__AltitudeControl_2?(0):(1));
979
  }
980
  /*@
981
  ensures ((!(Logical_Operator_Out1_198?\true:\false)) == (!(!(Logical_Operator_In1_197?\true:\false))));
982
  assigns Logical_Operator_Out1_198;
983
  */
984
  {
985
  Logical_Operator_Out1_198 = (!Logical_Operator_In1_197);
986
  }
987
  /*@
988
  ensures ((!(Switch_In2_303?\true:\false)) == (!((__AltitudeControl_2?\true:\false)?(0):(1))));
989
  assigns Switch_In2_303;
990
  */
991
  {
992
  Switch_In2_303 = (__AltitudeControl_2?(0):(1));
993
  }
994
  /*@
995
  ensures ((Sum_Out1_286) == ((AltCmd_Out1_29) + (- (Alt_Out1_39))));
996
  assigns Sum_Out1_286;
997
  */
998
  {
999
  Sum_Out1_286 = (AltCmd_Out1_29 + (- Alt_Out1_39));
1000
  }
1001
  /*@
1002
  ensures ((Kh_Out1_193) == (0.08 * (Sum_Out1_286)));
1003
  assigns Kh_Out1_193;
1004
  */
1005
  {
1006
  Kh_Out1_193 = (0.08 * Sum_Out1_286);
1007
  }
1008
  /*@
1009
  ensures ((Switch_Out1_305) == ((Switch_In2_303?\true:\false)?((Kh_Out1_193)):(0.)));
1010
  assigns Switch_Out1_305;
1011
  */
1012
  {
1013
  Switch_Out1_305 = (Switch_In2_303?(Kh_Out1_193):(0.));
1014
  }
1015
  /*@
1016
  ensures Ctrans_VariableLimitSaturation((Sum3_Out1_296),
1017
                                         (Switch_Out1_305),
1018
                                         (k_Out1_585),
1019
                                         (Variable_Limit_Saturation_0_Out1_509));
1020
  assigns Variable_Limit_Saturation_0_Out1_509;
1021
  */
1022
  {
1023
  VariableLimitSaturation_step (Sum3_Out1_296, Switch_Out1_305, k_Out1_585, &Variable_Limit_Saturation_0_Out1_509);
1024
  }
1025
  /*@
1026
  ensures Ctrans_VariableRateLimit((hdotChgRate_Out1_69),
1027
                                   (Variable_Limit_Saturation_0_Out1_509),
1028
                                   (Logical_Operator_Out1_198?\true:\false),
1029
                                   (hdot_Out1_59),
1030
                                   (Variable__Rate_Limit_Out1_324),
1031
                                   \at(*self, Pre).ni_0,
1032
                                   (*self).ni_0);
1033
  assigns Variable__Rate_Limit_Out1_324, \at(*self, Pre).ni_0, (*self).ni_0;
1034
  */
1035
  {
1036
  VariableRateLimit_step (hdotChgRate_Out1_69, Variable_Limit_Saturation_0_Out1_509, Logical_Operator_Out1_198, hdot_Out1_59, &Variable__Rate_Limit_Out1_324, &self->ni_0);
1037
  }
1038
  /*@
1039
  ensures ((r2d_Out1_603) == (57.2958 * (Variable__Rate_Limit_Out1_324)));
1040
  assigns r2d_Out1_603;
1041
  */
1042
  {
1043
  r2d_Out1_603 = (57.2958 * Variable__Rate_Limit_Out1_324);
1044
  }
1045
  /*@
1046
  ensures ((kts2fps_Out1_594) == (1.6878 * (GsKts_Out1_49)));
1047
  assigns kts2fps_Out1_594;
1048
  */
1049
  {
1050
  kts2fps_Out1_594 = (1.6878 * GsKts_Out1_49);
1051
  }
1052
  /*@
1053
  ensures ((!(Switch1_In2_312?\true:\false)) == (!((__AltitudeControl_2?\true:\false)?(0):(1))));
1054
  assigns Switch1_In2_312;
1055
  */
1056
  {
1057
  Switch1_In2_312 = (__AltitudeControl_2?(0):(1));
1058
  }
1059
  /*@
1060
  ensures ((Switch1_Out1_314) == ((Switch1_In2_312?\true:\false)?((r2d_Out1_603)):(0.)));
1061
  assigns Switch1_Out1_314;
1062
  */
1063
  {
1064
  Switch1_Out1_314 = (Switch1_In2_312?(r2d_Out1_603):(0.));
1065
  }
1066
  /*@
1067
  ensures ((*altgammacmd_In1_661) == (Switch1_Out1_314));
1068
  assigns *altgammacmd_In1_661;
1069
  */
1070
  {
1071
  *altgammacmd_In1_661 = Switch1_Out1_314;
1072
  }
1073
  /*@
1074
  ensures Ctrans_Saturation((kts2fps_Out1_594),
1075
                            (Saturation1_Out1_213));
1076
  assigns Saturation1_Out1_213;
1077
  */
1078
  {
1079
  Saturation_step (kts2fps_Out1_594, &Saturation1_Out1_213);
1080
  }
1081
  }}}}}}}}}}}}}}}}}}}}return;
1082
}
1083

    
1084
void VariableRateLimit_reset (struct VariableRateLimit_mem *self) {
1085
  /*@
1086
  ensures ((*self).ni_2._reg._first==1);
1087
  assigns (*self).ni_2;
1088
  */
1089
  {
1090
  _arrow_reset(&self->ni_2);
1091
  }
1092
  /*@
1093
  ensures init_integrator_reset((*self).ni_1);
1094
  assigns (*self).ni_1;
1095
  */
1096
  {
1097
  integrator_reset_reset(&self->ni_1);
1098
  }
1099
  return;
1100
}
1101

    
1102
void VariableRateLimit_step (double ratelim_Out1_334, double input_Out1_344,
1103
                             _Bool ICtrig_Out1_354, double IC_Out1_364, 
1104
                             double (*output_In1_489),
1105
                             struct VariableRateLimit_mem *self) {
1106
  /*@ensures Ctrans_VariableRateLimit((ratelim_Out1_334),
1107
                                      (input_Out1_344),
1108
                                      (ICtrig_Out1_354?\true:\false),
1109
                                      (IC_Out1_364),
1110
                                      (*output_In1_489),
1111
                                      \at(*self, Pre),
1112
                                      (*self));
1113
  assigns *output_In1_489, *self;
1114
  */
1115
  {
1116
  
1117
  double Gain1_Out1_382;
1118
  double Gain_Out1_373;
1119
  double Integrator1_Out1_391;
1120
  double Sum2_Out1_401;
1121
  double Variable_Limit_Saturation_Out1_410;
1122
  _Bool __VariableRateLimit_1;
1123
  double __VariableRateLimit_2;
1124
  
1125
  
1126
  /* Asserting trans predicate: locals are [Gain1_Out1_382: real, Gain_Out1_373: real, Integrator1_Out1_391: real, Sum2_Out1_401: real, Variable_Limit_Saturation_Out1_410: real, __VariableRateLimit_1: bool, __VariableRateLimit_2: real] */
1127
  /*@ensures \exists real Gain1_Out1_382;
1128
  \exists real Gain_Out1_373;
1129
  \exists real Integrator1_Out1_391;
1130
  \exists real Sum2_Out1_401;
1131
  \exists real Variable_Limit_Saturation_Out1_410;
1132
  \exists boolean __VariableRateLimit_1;
1133
  \exists real __VariableRateLimit_2;
1134
  trans_VariableRateLimit((ratelim_Out1_334),
1135
                          (input_Out1_344),
1136
                          (ICtrig_Out1_354?\true:\false),
1137
                          (IC_Out1_364),
1138
                          (*output_In1_489),
1139
                          \at(*self, Pre),
1140
                          (*self),
1141
                          (Gain1_Out1_382),
1142
                          (Gain_Out1_373),
1143
                          (Integrator1_Out1_391),
1144
                          (Sum2_Out1_401),
1145
                          (Variable_Limit_Saturation_Out1_410),
1146
                          (__VariableRateLimit_1?\true:\false),
1147
                          (__VariableRateLimit_2));
1148
  assigns *output_In1_489, *self, Gain1_Out1_382, Gain_Out1_373,
1149
          Integrator1_Out1_391, Sum2_Out1_401,
1150
          Variable_Limit_Saturation_Out1_410, __VariableRateLimit_1,
1151
          __VariableRateLimit_2;
1152
  */
1153
  {
1154
  
1155
  /*@ensures \exists real Gain_Out1_373;
1156
  \exists real Integrator1_Out1_391;
1157
  \exists real Sum2_Out1_401;
1158
  \exists real Variable_Limit_Saturation_Out1_410;
1159
  \exists boolean __VariableRateLimit_1;
1160
  \exists real __VariableRateLimit_2;
1161
  trans_VariableRateLimit((ratelim_Out1_334),
1162
                          (input_Out1_344),
1163
                          (ICtrig_Out1_354?\true:\false),
1164
                          (IC_Out1_364),
1165
                          (*output_In1_489),
1166
                          \at(*self, Pre),
1167
                          (*self),
1168
                          (Gain1_Out1_382),
1169
                          (Gain_Out1_373),
1170
                          (Integrator1_Out1_391),
1171
                          (Sum2_Out1_401),
1172
                          (Variable_Limit_Saturation_Out1_410),
1173
                          (__VariableRateLimit_1?\true:\false),
1174
                          (__VariableRateLimit_2));
1175
  assigns *output_In1_489, *self, Gain1_Out1_382, Gain_Out1_373,
1176
          Integrator1_Out1_391, Sum2_Out1_401,
1177
          Variable_Limit_Saturation_Out1_410, __VariableRateLimit_1,
1178
          __VariableRateLimit_2;
1179
  */
1180
  {
1181
  
1182
  /*@ensures \exists real Integrator1_Out1_391;
1183
  \exists real Sum2_Out1_401;
1184
  \exists real Variable_Limit_Saturation_Out1_410;
1185
  \exists boolean __VariableRateLimit_1;
1186
  \exists real __VariableRateLimit_2;
1187
  trans_VariableRateLimit((ratelim_Out1_334),
1188
                          (input_Out1_344),
1189
                          (ICtrig_Out1_354?\true:\false),
1190
                          (IC_Out1_364),
1191
                          (*output_In1_489),
1192
                          \at(*self, Pre),
1193
                          (*self),
1194
                          (Gain1_Out1_382),
1195
                          (Gain_Out1_373),
1196
                          (Integrator1_Out1_391),
1197
                          (Sum2_Out1_401),
1198
                          (Variable_Limit_Saturation_Out1_410),
1199
                          (__VariableRateLimit_1?\true:\false),
1200
                          (__VariableRateLimit_2));
1201
  assigns *output_In1_489, *self, Gain1_Out1_382, Gain_Out1_373,
1202
          Integrator1_Out1_391, Sum2_Out1_401,
1203
          Variable_Limit_Saturation_Out1_410, __VariableRateLimit_1,
1204
          __VariableRateLimit_2;
1205
  */
1206
  {
1207
  
1208
  /*@ensures \exists real Sum2_Out1_401;
1209
  \exists real Variable_Limit_Saturation_Out1_410;
1210
  \exists boolean __VariableRateLimit_1;
1211
  \exists real __VariableRateLimit_2;
1212
  trans_VariableRateLimit((ratelim_Out1_334),
1213
                          (input_Out1_344),
1214
                          (ICtrig_Out1_354?\true:\false),
1215
                          (IC_Out1_364),
1216
                          (*output_In1_489),
1217
                          \at(*self, Pre),
1218
                          (*self),
1219
                          (Gain1_Out1_382),
1220
                          (Gain_Out1_373),
1221
                          (Integrator1_Out1_391),
1222
                          (Sum2_Out1_401),
1223
                          (Variable_Limit_Saturation_Out1_410),
1224
                          (__VariableRateLimit_1?\true:\false),
1225
                          (__VariableRateLimit_2));
1226
  assigns *output_In1_489, *self, Gain1_Out1_382, Gain_Out1_373,
1227
          Integrator1_Out1_391, Sum2_Out1_401,
1228
          Variable_Limit_Saturation_Out1_410, __VariableRateLimit_1,
1229
          __VariableRateLimit_2;
1230
  */
1231
  {
1232
  
1233
  /*@ensures \exists real Variable_Limit_Saturation_Out1_410;
1234
  \exists boolean __VariableRateLimit_1;
1235
  \exists real __VariableRateLimit_2;
1236
  trans_VariableRateLimit((ratelim_Out1_334),
1237
                          (input_Out1_344),
1238
                          (ICtrig_Out1_354?\true:\false),
1239
                          (IC_Out1_364),
1240
                          (*output_In1_489),
1241
                          \at(*self, Pre),
1242
                          (*self),
1243
                          (Gain1_Out1_382),
1244
                          (Gain_Out1_373),
1245
                          (Integrator1_Out1_391),
1246
                          (Sum2_Out1_401),
1247
                          (Variable_Limit_Saturation_Out1_410),
1248
                          (__VariableRateLimit_1?\true:\false),
1249
                          (__VariableRateLimit_2));
1250
  assigns *output_In1_489, *self, Gain1_Out1_382, Gain_Out1_373,
1251
          Integrator1_Out1_391, Sum2_Out1_401,
1252
          Variable_Limit_Saturation_Out1_410, __VariableRateLimit_1,
1253
          __VariableRateLimit_2;
1254
  */
1255
  {
1256
  
1257
  /*@ensures \exists boolean __VariableRateLimit_1;
1258
  \exists real __VariableRateLimit_2;
1259
  trans_VariableRateLimit((ratelim_Out1_334),
1260
                          (input_Out1_344),
1261
                          (ICtrig_Out1_354?\true:\false),
1262
                          (IC_Out1_364),
1263
                          (*output_In1_489),
1264
                          \at(*self, Pre),
1265
                          (*self),
1266
                          (Gain1_Out1_382),
1267
                          (Gain_Out1_373),
1268
                          (Integrator1_Out1_391),
1269
                          (Sum2_Out1_401),
1270
                          (Variable_Limit_Saturation_Out1_410),
1271
                          (__VariableRateLimit_1?\true:\false),
1272
                          (__VariableRateLimit_2));
1273
  assigns *output_In1_489, *self, Gain1_Out1_382, Gain_Out1_373,
1274
          Integrator1_Out1_391, Sum2_Out1_401,
1275
          Variable_Limit_Saturation_Out1_410, __VariableRateLimit_1,
1276
          __VariableRateLimit_2;
1277
  */
1278
  {
1279
  
1280
  /*@ensures \exists real __VariableRateLimit_2;
1281
  trans_VariableRateLimit((ratelim_Out1_334),
1282
                          (input_Out1_344),
1283
                          (ICtrig_Out1_354?\true:\false),
1284
                          (IC_Out1_364),
1285
                          (*output_In1_489),
1286
                          \at(*self, Pre),
1287
                          (*self),
1288
                          (Gain1_Out1_382),
1289
                          (Gain_Out1_373),
1290
                          (Integrator1_Out1_391),
1291
                          (Sum2_Out1_401),
1292
                          (Variable_Limit_Saturation_Out1_410),
1293
                          (__VariableRateLimit_1?\true:\false),
1294
                          (__VariableRateLimit_2));
1295
  assigns *output_In1_489, *self, Gain1_Out1_382, Gain_Out1_373,
1296
          Integrator1_Out1_391, Sum2_Out1_401,
1297
          Variable_Limit_Saturation_Out1_410, __VariableRateLimit_1,
1298
          __VariableRateLimit_2;
1299
  */
1300
  {
1301
  
1302
  /*@ensures trans_VariableRateLimit((ratelim_Out1_334),
1303
                                     (input_Out1_344),
1304
                                     (ICtrig_Out1_354?\true:\false),
1305
                                     (IC_Out1_364),
1306
                                     (*output_In1_489),
1307
                                     \at(*self, Pre),
1308
                                     (*self),
1309
                                     (Gain1_Out1_382),
1310
                                     (Gain_Out1_373),
1311
                                     (Integrator1_Out1_391),
1312
                                     (Sum2_Out1_401),
1313
                                     (Variable_Limit_Saturation_Out1_410),
1314
                                     (__VariableRateLimit_1?\true:\false),
1315
                                     (__VariableRateLimit_2));
1316
  assigns *output_In1_489, *self, Gain1_Out1_382, Gain_Out1_373,
1317
          Integrator1_Out1_391, Sum2_Out1_401,
1318
          Variable_Limit_Saturation_Out1_410, __VariableRateLimit_1,
1319
          __VariableRateLimit_2;
1320
  */
1321
  {
1322
  
1323
  
1324
  /*@
1325
  ensures ((__VariableRateLimit_1?\true:\false)==(\at(*self, Pre).ni_2._reg._first?(1):(0))) && ((*self).ni_2._reg._first==0);
1326
  assigns __VariableRateLimit_1, (*self).ni_2;
1327
  */
1328
  {
1329
  _arrow_step (1, 0, &__VariableRateLimit_1, &self->ni_2);
1330
  }
1331
  /*@
1332
  ensures ((Integrator1_Out1_391) == ((__VariableRateLimit_1?\true:\false)?((IC_Out1_364)):(\at(*self, Pre)._reg.__VariableRateLimit_3)));
1333
  assigns Integrator1_Out1_391;
1334
  */
1335
  {
1336
  Integrator1_Out1_391 = (__VariableRateLimit_1?(IC_Out1_364):(self->_reg.__VariableRateLimit_3));
1337
  }
1338
  /*@
1339
  ensures ((*output_In1_489) == (Integrator1_Out1_391));
1340
  assigns *output_In1_489;
1341
  */
1342
  {
1343
  *output_In1_489 = Integrator1_Out1_391;
1344
  }
1345
  /*@
1346
  ensures ((Gain1_Out1_382) == (- (ratelim_Out1_334)));
1347
  assigns Gain1_Out1_382;
1348
  */
1349
  {
1350
  Gain1_Out1_382 = (- ratelim_Out1_334);
1351
  }
1352
  /*@
1353
  ensures ((Sum2_Out1_401) == ((input_Out1_344) + (- (Integrator1_Out1_391))));
1354
  assigns Sum2_Out1_401;
1355
  */
1356
  {
1357
  Sum2_Out1_401 = (input_Out1_344 + (- Integrator1_Out1_391));
1358
  }
1359
  /*@
1360
  ensures ((Gain_Out1_373) == (20. * (Sum2_Out1_401)));
1361
  assigns Gain_Out1_373;
1362
  */
1363
  {
1364
  Gain_Out1_373 = (20. * Sum2_Out1_401);
1365
  }
1366
  /*@
1367
  ensures Ctrans_VariableLimitSaturation((ratelim_Out1_334),
1368
                                         (Gain_Out1_373),
1369
                                         (Gain1_Out1_382),
1370
                                         (Variable_Limit_Saturation_Out1_410));
1371
  assigns Variable_Limit_Saturation_Out1_410;
1372
  */
1373
  {
1374
  VariableLimitSaturation_step (ratelim_Out1_334, Gain_Out1_373, Gain1_Out1_382, &Variable_Limit_Saturation_Out1_410);
1375
  }
1376
  /*@
1377
  ensures Ctrans_integrator_reset((Variable_Limit_Saturation_Out1_410),
1378
                                  (ICtrig_Out1_354?\true:\false),
1379
                                  (IC_Out1_364),
1380
                                  (__VariableRateLimit_2),
1381
                                  \at(*self, Pre).ni_1,
1382
                                  (*self).ni_1);
1383
  assigns __VariableRateLimit_2, \at(*self, Pre).ni_1, (*self).ni_1;
1384
  */
1385
  {
1386
  integrator_reset_step (Variable_Limit_Saturation_Out1_410, ICtrig_Out1_354, IC_Out1_364, &__VariableRateLimit_2, &self->ni_1);
1387
  }
1388
  /*@
1389
  ensures ((*self)._reg.__VariableRateLimit_3 == (__VariableRateLimit_2));
1390
  assigns (*self)._reg.__VariableRateLimit_3;
1391
  */
1392
  {
1393
  self->_reg.__VariableRateLimit_3 = __VariableRateLimit_2;
1394
  }
1395
  }}}}}}}}}return;
1396
}
1397

    
1398
void Saturation_step (double Signal, 
1399
                      double (*s_out)
1400
                      ) {
1401
  /*@ensures Ctrans_Saturation((Signal),
1402
                               (*s_out));
1403
  assigns *s_out;
1404
  */
1405
  {
1406
  
1407
  _Bool __Saturation_1;
1408
  _Bool __Saturation_2;
1409
  double enforce_lo_lim;
1410
  
1411
  
1412
  /* Asserting trans predicate: locals are [__Saturation_1: bool, __Saturation_2: bool, enforce_lo_lim: real] */
1413
  /*@ensures \exists boolean __Saturation_1;
1414
  \exists boolean __Saturation_2;
1415
  \exists real enforce_lo_lim;
1416
  trans_Saturation((Signal),
1417
                   (*s_out),
1418
                   (__Saturation_1?\true:\false),
1419
                   (__Saturation_2?\true:\false),
1420
                   (enforce_lo_lim));
1421
  assigns *s_out, __Saturation_1, __Saturation_2, enforce_lo_lim;
1422
  */
1423
  {
1424
  
1425
  /*@ensures \exists boolean __Saturation_2;
1426
  \exists real enforce_lo_lim;
1427
  trans_Saturation((Signal),
1428
                   (*s_out),
1429
                   (__Saturation_1?\true:\false),
1430
                   (__Saturation_2?\true:\false),
1431
                   (enforce_lo_lim));
1432
  assigns *s_out, __Saturation_1, __Saturation_2, enforce_lo_lim;
1433
  */
1434
  {
1435
  
1436
  /*@ensures \exists real enforce_lo_lim;
1437
  trans_Saturation((Signal),
1438
                   (*s_out),
1439
                   (__Saturation_1?\true:\false),
1440
                   (__Saturation_2?\true:\false),
1441
                   (enforce_lo_lim));
1442
  assigns *s_out, __Saturation_1, __Saturation_2, enforce_lo_lim;
1443
  */
1444
  {
1445
  
1446
  /*@ensures trans_Saturation((Signal),
1447
                              (*s_out),
1448
                              (__Saturation_1?\true:\false),
1449
                              (__Saturation_2?\true:\false),
1450
                              (enforce_lo_lim));
1451
  assigns *s_out, __Saturation_1, __Saturation_2, enforce_lo_lim;
1452
  */
1453
  {
1454
  
1455
  /*@
1456
  ensures ((__Saturation_1?\true:\false) == (0.0001 >= (Signal)));
1457
  assigns __Saturation_1;
1458
  */
1459
  {
1460
  __Saturation_1 = (0.0001 >= Signal);
1461
  }
1462
  /*@
1463
  ensures ((enforce_lo_lim) == ((__Saturation_1?\true:\false)?(0.0001):((Signal))));
1464
  assigns enforce_lo_lim;
1465
  */
1466
  {
1467
  enforce_lo_lim = (__Saturation_1?(0.0001):(Signal));
1468
  }
1469
  /*@
1470
  ensures ((__Saturation_2?\true:\false) == (1000. <= (enforce_lo_lim)));
1471
  assigns __Saturation_2;
1472
  */
1473
  {
1474
  __Saturation_2 = (1000. <= enforce_lo_lim);
1475
  }
1476
  /*@
1477
  ensures ((*s_out) == ((__Saturation_2?\true:\false)?(1000.):((enforce_lo_lim))));
1478
  assigns *s_out;
1479
  */
1480
  {
1481
  *s_out = (__Saturation_2?(1000.):(enforce_lo_lim));
1482
  }
1483
  }}}}}return;
1484
}
1485

    
1486
void integrator_reset_reset (struct integrator_reset_mem *self) {
1487
  /*@
1488
  ensures ((*self).ni_3._reg._first==1);
1489
  assigns (*self).ni_3;
1490
  */
1491
  {
1492
  _arrow_reset(&self->ni_3);
1493
  }
1494
  return;
1495
}
1496

    
1497
void integrator_reset_step (double Fx, _Bool ResetLevel, double x0, 
1498
                            double (*ir_out),
1499
                            struct integrator_reset_mem *self) {
1500
  /*@ensures Ctrans_integrator_reset((Fx),
1501
                                     (ResetLevel?\true:\false),
1502
                                     (x0),
1503
                                     (*ir_out),
1504
                                     \at(*self, Pre),
1505
                                     (*self));
1506
  assigns *ir_out, *self;
1507
  */
1508
  {
1509
  
1510
  _Bool __integrator_reset_1;
1511
  
1512
  
1513
  /* Asserting trans predicate: locals are [__integrator_reset_1: bool] */
1514
  /*@ensures \exists boolean __integrator_reset_1;
1515
  trans_integrator_reset((Fx),
1516
                         (ResetLevel?\true:\false),
1517
                         (x0),
1518
                         (*ir_out),
1519
                         \at(*self, Pre),
1520
                         (*self),
1521
                         (__integrator_reset_1?\true:\false));
1522
  assigns *ir_out, *self, __integrator_reset_1;
1523
  */
1524
  {
1525
  
1526
  /*@ensures trans_integrator_reset((Fx),
1527
                                    (ResetLevel?\true:\false),
1528
                                    (x0),
1529
                                    (*ir_out),
1530
                                    \at(*self, Pre),
1531
                                    (*self),
1532
                                    (__integrator_reset_1?\true:\false));
1533
  assigns *ir_out, *self, __integrator_reset_1;
1534
  */
1535
  {
1536
  
1537
  
1538
  /*@
1539
  ensures ((__integrator_reset_1?\true:\false)==(\at(*self, Pre).ni_3._reg._first?(1):(0))) && ((*self).ni_3._reg._first==0);
1540
  assigns __integrator_reset_1, (*self).ni_3;
1541
  */
1542
  {
1543
  _arrow_step (1, 0, &__integrator_reset_1, &self->ni_3);
1544
  }
1545
  /*@
1546
  ensures ((*ir_out) == ((__integrator_reset_1?\true:\false)?((x0)):(((ResetLevel?\true:\false)?((x0)):((((Fx) * 1.) + \at(*self, Pre)._reg.__integrator_reset_2))))));
1547
  assigns *ir_out;
1548
  */
1549
  {
1550
  *ir_out = (__integrator_reset_1?(x0):((ResetLevel?(x0):(((Fx * 1.) + self->_reg.__integrator_reset_2)))));
1551
  }
1552
  /*@
1553
  ensures ((*self)._reg.__integrator_reset_2 == (*ir_out));
1554
  assigns (*self)._reg.__integrator_reset_2;
1555
  */
1556
  {
1557
  self->_reg.__integrator_reset_2 = *ir_out;
1558
  }
1559
  }}}return;
1560
}
1561

    
1562
void VariableLimitSaturation_step (double up_lim, double Signal,
1563
                                   double lo_lim, 
1564
                                   double (*out)
1565
                                   ) {
1566
  /*@ensures Ctrans_VariableLimitSaturation((up_lim),
1567
                                            (Signal),
1568
                                            (lo_lim),
1569
                                            (*out));
1570
  assigns *out;
1571
  */
1572
  {
1573
  
1574
  _Bool __VariableLimitSaturation_1;
1575
  _Bool __VariableLimitSaturation_2;
1576
  double enforce_lo_lim;
1577
  
1578
  
1579
  /* Asserting trans predicate: locals are [__VariableLimitSaturation_1: bool, __VariableLimitSaturation_2: bool, enforce_lo_lim: real] */
1580
  /*@ensures \exists boolean __VariableLimitSaturation_1;
1581
  \exists boolean __VariableLimitSaturation_2;
1582
  \exists real enforce_lo_lim;
1583
  trans_VariableLimitSaturation((up_lim),
1584
                                (Signal),
1585
                                (lo_lim),
1586
                                (*out),
1587
                                (__VariableLimitSaturation_1?\true:\false),
1588
                                (__VariableLimitSaturation_2?\true:\false),
1589
                                (enforce_lo_lim));
1590
  assigns *out, __VariableLimitSaturation_1, __VariableLimitSaturation_2,
1591
          enforce_lo_lim;
1592
  */
1593
  {
1594
  
1595
  /*@ensures \exists boolean __VariableLimitSaturation_2;
1596
  \exists real enforce_lo_lim;
1597
  trans_VariableLimitSaturation((up_lim),
1598
                                (Signal),
1599
                                (lo_lim),
1600
                                (*out),
1601
                                (__VariableLimitSaturation_1?\true:\false),
1602
                                (__VariableLimitSaturation_2?\true:\false),
1603
                                (enforce_lo_lim));
1604
  assigns *out, __VariableLimitSaturation_1, __VariableLimitSaturation_2,
1605
          enforce_lo_lim;
1606
  */
1607
  {
1608
  
1609
  /*@ensures \exists real enforce_lo_lim;
1610
  trans_VariableLimitSaturation((up_lim),
1611
                                (Signal),
1612
                                (lo_lim),
1613
                                (*out),
1614
                                (__VariableLimitSaturation_1?\true:\false),
1615
                                (__VariableLimitSaturation_2?\true:\false),
1616
                                (enforce_lo_lim));
1617
  assigns *out, __VariableLimitSaturation_1, __VariableLimitSaturation_2,
1618
          enforce_lo_lim;
1619
  */
1620
  {
1621
  
1622
  /*@ensures trans_VariableLimitSaturation((up_lim),
1623
                                           (Signal),
1624
                                           (lo_lim),
1625
                                           (*out),
1626
                                           (__VariableLimitSaturation_1?\true:\false),
1627
                                           (__VariableLimitSaturation_2?\true:\false),
1628
                                           (enforce_lo_lim));
1629
  assigns *out, __VariableLimitSaturation_1, __VariableLimitSaturation_2,
1630
          enforce_lo_lim;
1631
  */
1632
  {
1633
  
1634
  /*@
1635
  ensures ((__VariableLimitSaturation_1?\true:\false) == ((Signal) >= (lo_lim)));
1636
  assigns __VariableLimitSaturation_1;
1637
  */
1638
  {
1639
  __VariableLimitSaturation_1 = (Signal >= lo_lim);
1640
  }
1641
  /*@
1642
  ensures ((enforce_lo_lim) == ((__VariableLimitSaturation_1?\true:\false)?((Signal)):((lo_lim))));
1643
  assigns enforce_lo_lim;
1644
  */
1645
  {
1646
  enforce_lo_lim = (__VariableLimitSaturation_1?(Signal):(lo_lim));
1647
  }
1648
  /*@
1649
  ensures ((__VariableLimitSaturation_2?\true:\false) == ((enforce_lo_lim) <= (up_lim)));
1650
  assigns __VariableLimitSaturation_2;
1651
  */
1652
  {
1653
  __VariableLimitSaturation_2 = (enforce_lo_lim <= up_lim);
1654
  }
1655
  /*@
1656
  ensures ((*out) == ((__VariableLimitSaturation_2?\true:\false)?((enforce_lo_lim)):((up_lim))));
1657
  assigns *out;
1658
  */
1659
  {
1660
  *out = (__VariableLimitSaturation_2?(enforce_lo_lim):(up_lim));
1661
  }
1662
  }}}}}return;
1663
}
1664

    
(1-1/4)