aboutsummaryrefslogtreecommitdiff
path: root/src/benchmarks/cfrac/padd.c
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fl.fischer@fau.de>2020-05-06 16:56:32 +0200
committerFlorian Fischer <florian.fl.fischer@fau.de>2020-06-02 11:18:47 +0200
commit8174a918ea3b7cb216bf7ea98cfdc10661b5c37d (patch)
tree0747ec3ccb9f8d7eeccfac35977fc17855ca3bbb /src/benchmarks/cfrac/padd.c
parent8f52e8fc02dd235582f5961941bcd564e9a681cd (diff)
downloadallocbench-8174a918ea3b7cb216bf7ea98cfdc10661b5c37d.tar.gz
allocbench-8174a918ea3b7cb216bf7ea98cfdc10661b5c37d.zip
make the whole project more python idiomatic
* rename src directory to allocbench * make global variable names UPPERCASE * format a lot of code using yapf * use lowercase ld_preload and ld_library_path as Allocator members * name expected Errors 'err' and don't raise a new Exception * disable some pylint messages
Diffstat (limited to 'src/benchmarks/cfrac/padd.c')
-rw-r--r--src/benchmarks/cfrac/padd.c94
1 files changed, 0 insertions, 94 deletions
diff --git a/src/benchmarks/cfrac/padd.c b/src/benchmarks/cfrac/padd.c
deleted file mode 100644
index 62b93d5..0000000
--- a/src/benchmarks/cfrac/padd.c
+++ /dev/null
@@ -1,94 +0,0 @@
-#include "pdefs.h"
-#include "precision.h"
-#include <string.h>
-
-#ifdef ASM_16BIT
-#include "asm16bit.h"
-#endif
-
-/*
- * Add
- *
- * This will work correctly if -0 is passed as input
- */
-precision padd(u, v)
- register precision v;
-#ifndef ASM_16BIT
- precision u;
-{
- register digitPtr wPtr, uPtr, vPtr;
-#else
- register precision u;
-{
- register digitPtr wPtr;
- digitPtr uPtr;
-#endif
- precision w; /* function result */
- register accumulator temp; /* 0 <= temp < 2*base */
- register digit carry; /* 0 <= carry <= 1 */
-#ifdef ASM_16BIT
- register int size;
-#endif
-
- (void) pparm(u);
- (void) pparm(v);
- if (u->sign != v->sign) { /* Are we are actually subtracting? */
- w = pUndef;
- if (v->sign) {
- v->sign = !v->sign; /* can't generate -0 */
- pset(&w, psub(u, v));
- v->sign = !v->sign;
- } else {
- u->sign = !u->sign; /* can't generate -0 */
- pset(&w, psub(v, u));
- u->sign = !u->sign;
- }
- } else {
- if (u->size < v->size) { /* u is always biggest number */
- w = u; u = v; v = w;
- }
-
- w = palloc(u->size+1); /* there is at most one added digit */
- if (w == pUndef) return w; /* arguments not destroyed */
-
- w->sign = u->sign;
-
- uPtr = u->value;
- wPtr = w->value;
-#ifndef ASM_16BIT
- vPtr = v->value;
- carry = 0;
- do { /* Add digits in both args */
- temp = *uPtr++ + *vPtr++; /* 0 <= temp < 2*base-1 */
- temp += carry; /* 0 <= temp < 2*base */
- carry = divBase(temp); /* 0 <= carry <= 1 */
- *wPtr++ = modBase(temp); /* mod has positive args */
- } while (vPtr < v->value + v->size);
-
- while (uPtr < u->value + u->size) { /* propogate carry */
- temp = *uPtr++ + carry;
- carry = divBase(temp);
- *wPtr++ = modBase(temp);
- }
- *wPtr = carry;
-#else
- size = v->size;
- temp = u->size - size;
- carry = memaddw(wPtr, uPtr, v->value, size);
- if (temp > 0) {
- memcpy(wPtr + size, uPtr + size, temp * sizeof(digit));
- if (carry) {
- carry = memincw(wPtr + size, temp);
- }
- }
- wPtr[u->size] = carry; /* yes, I do mean u->size */
-#endif
- if (carry == 0) {
- --(w->size);
- }
- }
-
- pdestroy(u);
- pdestroy(v);
- return presult(w);
-}