@@ -23,11 +23,15 @@ static void pd_scale( pd_t *n )
23
23
24
24
static void pd_adjust ( pd_t * n , int e , const int64_t * p )
25
25
{
26
- int neg = n -> v_ < 0L ;
27
- uint64_t v = neg ?- n -> v_ :n -> v_ ;
26
+ int64_t v = n -> v_ ;
28
27
int d = n -> e_ - e ;
29
- if ( d > 0 ) v *= p [d ]; else if ( d < 0 ) v /= p [- d ];
30
- pd_new ( n , neg ? - v : v , e );
28
+ if ( d > 0 ) {
29
+ v *= p [ d ];
30
+ }
31
+ else if ( d < 0 ) {
32
+ v /= p [ - d ];
33
+ }
34
+ pd_new ( n , v , e );
31
35
}
32
36
33
37
static void pd_mul ( pd_t * r , pd_t * n1 , pd_t * n2 )
@@ -41,11 +45,11 @@ static void pd_div( pd_t *r, pd_t *n1, pd_t *n2 )
41
45
{
42
46
if ( n1 -> v_ == 0 ) { pd_set ( r , n1 ); return ; }
43
47
int64_t v1 = n1 -> v_ , v2 = n2 -> v_ ;
44
- int neg1 = v1 < 0L , neg2 = v2 < 0L , m = 0 ;
48
+ int neg1 = v1 < 0L , neg2 = v2 < 0L , m = 0 ;
45
49
if ( neg1 ) v1 = - v1 ;
46
50
if ( neg2 ) v2 = - v2 ;
47
- for ( ;0L == (v1 & 0xfffffffff0000000 ); v1 *= 10L , ++ m );
48
- r -> v_ = (v1 * PD_SCALE9 ) / v2 ;
51
+ for ( ; 0UL == ( ( uint64_t ) v1 & 0xfffffffff0000000UL ); v1 *= 10L , ++ m );
52
+ r -> v_ = ( v1 * PD_SCALE9 ) / v2 ;
49
53
if ( neg1 ) r -> v_ = - r -> v_ ;
50
54
if ( neg2 ) r -> v_ = - r -> v_ ;
51
55
r -> e_ = n1 -> e_ - n2 -> e_ - m - 9 ;
@@ -243,7 +247,7 @@ static inline void upd_twap(
243
247
{
244
248
pd_t px [1 ], conf [1 ];
245
249
pd_new_scale ( px , ptr -> agg_ .price_ , ptr -> expo_ );
246
- pd_new_scale ( conf , ptr -> agg_ .conf_ , ptr -> expo_ );
250
+ pd_new_scale ( conf , ( int64_t )( ptr -> agg_ .conf_ ) , ptr -> expo_ );
247
251
upd_ema ( & ptr -> twap_ , px , conf , nslots , qs );
248
252
upd_ema ( & ptr -> twac_ , conf , conf , nslots , qs );
249
253
}
@@ -279,7 +283,7 @@ static void upd_aggregate( pc_price_t *ptr, uint64_t slot )
279
283
pc_qset_t * qs = qset_new ( ptr -> expo_ );
280
284
281
285
// get number of slots from last published valid price
282
- int64_t agg_diff = slot - ptr -> last_slot_ ;
286
+ int64_t agg_diff = ( int64_t ) slot - ( int64_t )( ptr -> last_slot_ ) ;
283
287
284
288
// copy previous price
285
289
ptr -> prev_slot_ = ptr -> valid_slot_ ;
@@ -298,7 +302,7 @@ static void upd_aggregate( pc_price_t *ptr, uint64_t slot )
298
302
// copy contributing price to aggregate snapshot
299
303
iptr -> agg_ = iptr -> latest_ ;
300
304
// add quote to sorted permutation array if it is valid
301
- int64_t slot_diff = slot - iptr -> agg_ .pub_slot_ ;
305
+ int64_t slot_diff = ( int64_t ) slot - ( int64_t )( iptr -> agg_ .pub_slot_ ) ;
302
306
if ( iptr -> agg_ .status_ == PC_STATUS_TRADING &&
303
307
iptr -> agg_ .conf_ != 0UL &&
304
308
iptr -> agg_ .price_ != 0L &&
@@ -344,10 +348,10 @@ static void upd_aggregate( pc_price_t *ptr, uint64_t slot )
344
348
for ( uint32_t i = 0 ;i != numa ; ++ i ) {
345
349
pc_price_comp_t * iptr = & ptr -> comp_ [aidx [i ]];
346
350
// scale confidence interval by sqrt of slot age
347
- int64_t slot_diff = slot - iptr -> agg_ .pub_slot_ ;
351
+ int64_t slot_diff = ( int64_t ) slot - ( int64_t )( iptr -> agg_ .pub_slot_ ) ;
348
352
pd_t decay [1 ];
349
353
pd_new ( decay , qs -> decay_ [slot_diff ], PC_EXP_DECAY );
350
- pd_new_scale ( conf , iptr -> agg_ .conf_ , ptr -> expo_ );
354
+ pd_new_scale ( conf , ( int64_t )( iptr -> agg_ .conf_ ) , ptr -> expo_ );
351
355
pd_mul ( conf , conf , decay );
352
356
353
357
// assign price and upper/lower bounds of price
@@ -434,7 +438,7 @@ static void upd_aggregate( pc_price_t *ptr, uint64_t slot )
434
438
// take confidence interval as larger
435
439
pd_t * cptr = pd_gt ( uprice , q3price , qs -> fact_ ) ? uprice : q3price ;
436
440
pd_adjust ( cptr , ptr -> expo_ , qs -> fact_ );
437
- ptr -> agg_ .conf_ = cptr -> v_ ;
441
+ ptr -> agg_ .conf_ = ( uint64_t )( cptr -> v_ ) ;
438
442
upd_twap ( ptr , agg_diff , qs );
439
443
}
440
444
0 commit comments