Move oniguruma and decNumber to vendor directory (#3234)
This commit is contained in:
1 parent
2755664a8e
commit
972772153f
38 files changed
+14
-16
No files matched your search
Vendored
+61
@@ -0,0 +1,61 @@
|
||||
/* ------------------------------------------------------------------ */
|
||||
/* Decimal Number Library Demonstration program */
|
||||
/* ------------------------------------------------------------------ */
|
||||
/* Copyright (c) IBM Corporation, 2001. All rights reserved. */
|
||||
/* ----------------------------------------------------------------+- */
|
||||
/* right margin -->| */
|
||||
|
||||
// example6.c -- calculate compound interest, using Packed Decimal
|
||||
// Values are investment, rate (%), and years
|
||||
|
||||
#include "decPacked.h" // base number library
|
||||
#include <stdio.h> // for printf
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
{ // excerpt for User's Guide starts here--------------------------|
|
||||
decNumber one, mtwo, hundred; // constants
|
||||
decNumber start, rate, years; // parameters
|
||||
decNumber total; // result
|
||||
decContext set; // working context
|
||||
|
||||
uint8_t startpack[]={0x01, 0x00, 0x00, 0x0C}; // investment=100000
|
||||
int32_t startscale=0;
|
||||
uint8_t ratepack[]={0x06, 0x5C}; // rate=6.5%
|
||||
int32_t ratescale=1;
|
||||
uint8_t yearspack[]={0x02, 0x0C}; // years=20
|
||||
int32_t yearsscale=0;
|
||||
uint8_t respack[16]; // result, packed
|
||||
int32_t resscale; // ..
|
||||
char hexes[49]; // for packed->hex
|
||||
int i; // counter
|
||||
|
||||
if (argc<0) printf("%s", argv[1]); // noop for warning
|
||||
|
||||
decContextDefault(&set, DEC_INIT_BASE); // initialize
|
||||
set.traps=0; // no traps
|
||||
set.digits=25; // precision 25
|
||||
decNumberFromString(&one, "1", &set); // set constants
|
||||
decNumberFromString(&mtwo, "-2", &set);
|
||||
decNumberFromString(&hundred, "100", &set);
|
||||
|
||||
decPackedToNumber(startpack, sizeof(startpack), &startscale, &start);
|
||||
decPackedToNumber(ratepack, sizeof(ratepack), &ratescale, &rate);
|
||||
decPackedToNumber(yearspack, sizeof(yearspack), &yearsscale, &years);
|
||||
|
||||
decNumberDivide(&rate, &rate, &hundred, &set); // rate=rate/100
|
||||
decNumberAdd(&rate, &rate, &one, &set); // rate=rate+1
|
||||
decNumberPower(&rate, &rate, &years, &set); // rate=rate^years
|
||||
decNumberMultiply(&total, &rate, &start, &set); // total=rate*start
|
||||
decNumberRescale(&total, &total, &mtwo, &set); // two digits please
|
||||
|
||||
decPackedFromNumber(respack, sizeof(respack), &resscale, &total);
|
||||
|
||||
// lay out the total as sixteen hexadecimal pairs
|
||||
for (i=0; i<16; i++) {
|
||||
sprintf(&hexes[i*3], "%02x ", respack[i]);
|
||||
}
|
||||
printf("Result: %s (scale=%ld)\n", hexes, (long int)resscale);
|
||||
|
||||
} //---------------------------------------------------------------|
|
||||
return 0;
|
||||
} // main
|
||||
Reference in new issue
Block a user