MCPcopy Create free account
hub / github.com/questdb/questdb / multiply256

Method multiply256

core/src/main/java/io/questdb/std/Decimal256.java:2480–2599  ·  view source on GitHub ↗
(long hh, long hl, long lh, long ll)

Source from the content-addressed store, hash-verified

2478 }
2479
2480 private void multiply256(long hh, long hl, long lh, long ll) {
2481 // Perform 256-bit × 256-bit multiplication
2482 // Result is at most 512 bits, but we keep only the lower 256 bits
2483
2484 // Split this into eight 32-bit parts
2485 long a7 = this.hh >>> 32;
2486 long a6 = this.hh & 0xFFFFFFFFL;
2487 long a5 = this.hl >>> 32;
2488 long a4 = this.hl & 0xFFFFFFFFL;
2489 long a3 = this.lh >>> 32;
2490 long a2 = this.lh & 0xFFFFFFFFL;
2491 long a1 = this.ll >>> 32;
2492 long a0 = this.ll & 0xFFFFFFFFL;
2493
2494 long b7 = hh >>> 32;
2495 long b6 = hh & 0xFFFFFFFFL;
2496 long b5 = hl >>> 32;
2497 long b4 = hl & 0xFFFFFFFFL;
2498 long b3 = lh >>> 32;
2499 long b2 = lh & 0xFFFFFFFFL;
2500 long b1 = ll >>> 32;
2501 long b0 = ll & 0xFFFFFFFFL;
2502
2503 // Compute all partial products
2504 long p00 = a0 * b0;
2505 long p01 = a0 * b1;
2506 long p02 = a0 * b2;
2507 long p03 = a0 * b3;
2508 long p04 = a0 * b4;
2509 long p05 = a0 * b5;
2510 long p06 = a0 * b6;
2511 long p07 = a0 * b7;
2512 long p10 = a1 * b0;
2513 long p11 = a1 * b1;
2514 long p12 = a1 * b2;
2515 long p13 = a1 * b3;
2516 long p14 = a1 * b4;
2517 long p15 = a1 * b5;
2518 long p16 = a1 * b6;
2519 long p17 = a1 * b7;
2520 long p20 = a2 * b0;
2521 long p21 = a2 * b1;
2522 long p22 = a2 * b2;
2523 long p23 = a2 * b3;
2524 long p24 = a2 * b4;
2525 long p25 = a2 * b5;
2526 long p26 = a2 * b6;
2527 long p27 = a2 * b7;
2528 long p30 = a3 * b0;
2529 long p31 = a3 * b1;
2530 long p32 = a3 * b2;
2531 long p33 = a3 * b3;
2532 long p34 = a3 * b4;
2533 long p35 = a3 * b5;
2534 long p36 = a3 * b6;
2535 long p37 = a3 * b7;
2536 long p40 = a4 * b0;
2537 long p41 = a4 * b1;

Callers 1

multiplyMethod · 0.95

Calls 2

instanceMethod · 0.95
putMethod · 0.65

Tested by

no test coverage detected