shift_left (Core Functions)


Import

#include <archr/core/shift_left.h>
#include <archr/core/shift_left.hpp>
import archr.core
atomsLoads('archr')

Synopsis

 int8_t archr_core_shift_left_1i8i8(const int8_t i1, const int8_t i2);
(1)
 uint8_t archr_core_shift_left_1u8i8(const uint8_t i1, const int8_t i2);
(2)
 int16_t archr_core_shift_left_1i16i16(const int16_t i1, const int16_t i2);
(3)
 uint16_t archr_core_shift_left_1u16i16(const uint16_t i1, const int16_t i2);
(4)
 float archr_core_shift_left_1f32i32(const float i1, const int32_t i2);
(5)
 int32_t archr_core_shift_left_1i32i32(const int32_t i1, const int32_t i2);
(6)
 uint32_t archr_core_shift_left_1u32i32(const uint32_t i1, const int32_t i2);
(7)
 double archr_core_shift_left_1f64i64(const double i1, const int64_t i2);
(8)
 int64_t archr_core_shift_left_1i64i64(const int64_t i1, const int64_t i2);
(9)
 uint64_t archr_core_shift_left_1u64i64(const uint64_t i1, const int64_t i2);
(10)
 int8_t archr_core_shift_left_1i8u8(const int8_t i1, const uint8_t i2);
(11)
 uint8_t archr_core_shift_left_1u8u8(const uint8_t i1, const uint8_t i2);
(12)
 int16_t archr_core_shift_left_1i16u16(const int16_t i1, const uint16_t i2);
(13)
 uint16_t archr_core_shift_left_1u16u16(const uint16_t i1, const uint16_t i2);
(14)
 float archr_core_shift_left_1f32u32(const float i1, const uint32_t i2);
(15)
 int32_t archr_core_shift_left_1i32u32(const int32_t i1, const uint32_t i2);
(16)
 uint32_t archr_core_shift_left_1u32u32(const uint32_t i1, const uint32_t i2);
(17)
 double archr_core_shift_left_1f64u64(const double i1, const uint64_t i2);
(18)
 int64_t archr_core_shift_left_1i64u64(const int64_t i1, const uint64_t i2);
(19)
 uint64_t archr_core_shift_left_1u64u64(const uint64_t i1, const uint64_t i2);
(20)
 void archr_core_shift_left_i8i8(int8_t *o0, const int8_t *i1, size_t sz, const int8_t *i2);
(21)
 void archr_core_shift_left_u8i8(uint8_t *o0, const uint8_t *i1, size_t sz, const int8_t *i2);
(22)
 void archr_core_shift_left_i16i16(int16_t *o0, const int16_t *i1, size_t sz, const int16_t *i2);
(23)
 void archr_core_shift_left_u16i16(uint16_t *o0, const uint16_t *i1, size_t sz, const int16_t *i2);
(24)
 void archr_core_shift_left_f32i32(float *o0, const float *i1, size_t sz, const int32_t *i2);
(25)
 void archr_core_shift_left_i32i32(int32_t *o0, const int32_t *i1, size_t sz, const int32_t *i2);
(26)
 void archr_core_shift_left_u32i32(uint32_t *o0, const uint32_t *i1, size_t sz, const int32_t *i2);
(27)
 void archr_core_shift_left_f64i64(double *o0, const double *i1, size_t sz, const int64_t *i2);
(28)
 void archr_core_shift_left_i64i64(int64_t *o0, const int64_t *i1, size_t sz, const int64_t *i2);
(29)
 void archr_core_shift_left_u64i64(uint64_t *o0, const uint64_t *i1, size_t sz, const int64_t *i2);
(30)
 void archr_core_shift_left_i8u8(int8_t *o0, const int8_t *i1, size_t sz, const uint8_t *i2);
(31)
 void archr_core_shift_left_u8u8(uint8_t *o0, const uint8_t *i1, size_t sz, const uint8_t *i2);
(32)
 void archr_core_shift_left_i16u16(int16_t *o0, const int16_t *i1, size_t sz, const uint16_t *i2);
(33)
 void archr_core_shift_left_u16u16(uint16_t *o0, const uint16_t *i1, size_t sz, const uint16_t *i2);
(34)
 void archr_core_shift_left_f32u32(float *o0, const float *i1, size_t sz, const uint32_t *i2);
(35)
 void archr_core_shift_left_i32u32(int32_t *o0, const int32_t *i1, size_t sz, const uint32_t *i2);
(36)
 void archr_core_shift_left_u32u32(uint32_t *o0, const uint32_t *i1, size_t sz, const uint32_t *i2);
(37)
 void archr_core_shift_left_f64u64(double *o0, const double *i1, size_t sz, const uint64_t *i2);
(38)
 void archr_core_shift_left_i64u64(int64_t *o0, const int64_t *i1, size_t sz, const uint64_t *i2);
(39)
 void archr_core_shift_left_u64u64(uint64_t *o0, const uint64_t *i1, size_t sz, const uint64_t *i2);
(40)
 int8_t shift_left(const int8_t i1, const int8_t i2);
(1)
 uint8_t shift_left(const uint8_t i1, const int8_t i2);
(2)
 int16_t shift_left(const int16_t i1, const int16_t i2);
(3)
 uint16_t shift_left(const uint16_t i1, const int16_t i2);
(4)
 float shift_left(const float i1, const int32_t i2);
(5)
 int32_t shift_left(const int32_t i1, const int32_t i2);
(6)
 uint32_t shift_left(const uint32_t i1, const int32_t i2);
(7)
 double shift_left(const double i1, const int64_t i2);
(8)
 int64_t shift_left(const int64_t i1, const int64_t i2);
(9)
 uint64_t shift_left(const uint64_t i1, const int64_t i2);
(10)
 int8_t shift_left(const int8_t i1, const uint8_t i2);
(11)
 uint8_t shift_left(const uint8_t i1, const uint8_t i2);
(12)
 int16_t shift_left(const int16_t i1, const uint16_t i2);
(13)
 uint16_t shift_left(const uint16_t i1, const uint16_t i2);
(14)
 float shift_left(const float i1, const uint32_t i2);
(15)
 int32_t shift_left(const int32_t i1, const uint32_t i2);
(16)
 uint32_t shift_left(const uint32_t i1, const uint32_t i2);
(17)
 double shift_left(const double i1, const uint64_t i2);
(18)
 int64_t shift_left(const int64_t i1, const uint64_t i2);
(19)
 uint64_t shift_left(const uint64_t i1, const uint64_t i2);
(20)
 void shift_left(const int8_t *i1, size_t sz, const int8_t *i2, int8_t *o0);
(21)
 void shift_left(const uint8_t *i1, size_t sz, const int8_t *i2, uint8_t *o0);
(22)
 void shift_left(const int16_t *i1, size_t sz, const int16_t *i2, int16_t *o0);
(23)
 void shift_left(const uint16_t *i1, size_t sz, const int16_t *i2, uint16_t *o0);
(24)
 void shift_left(const float *i1, size_t sz, const int32_t *i2, float *o0);
(25)
 void shift_left(const int32_t *i1, size_t sz, const int32_t *i2, int32_t *o0);
(26)
 void shift_left(const uint32_t *i1, size_t sz, const int32_t *i2, uint32_t *o0);
(27)
 void shift_left(const double *i1, size_t sz, const int64_t *i2, double *o0);
(28)
 void shift_left(const int64_t *i1, size_t sz, const int64_t *i2, int64_t *o0);
(29)
 void shift_left(const uint64_t *i1, size_t sz, const int64_t *i2, uint64_t *o0);
(30)
 void shift_left(const int8_t *i1, size_t sz, const uint8_t *i2, int8_t *o0);
(31)
 void shift_left(const uint8_t *i1, size_t sz, const uint8_t *i2, uint8_t *o0);
(32)
 void shift_left(const int16_t *i1, size_t sz, const uint16_t *i2, int16_t *o0);
(33)
 void shift_left(const uint16_t *i1, size_t sz, const uint16_t *i2, uint16_t *o0);
(34)
 void shift_left(const float *i1, size_t sz, const uint32_t *i2, float *o0);
(35)
 void shift_left(const int32_t *i1, size_t sz, const uint32_t *i2, int32_t *o0);
(36)
 void shift_left(const uint32_t *i1, size_t sz, const uint32_t *i2, uint32_t *o0);
(37)
 void shift_left(const double *i1, size_t sz, const uint64_t *i2, double *o0);
(38)
 void shift_left(const int64_t *i1, size_t sz, const uint64_t *i2, int64_t *o0);
(39)
 void shift_left(const uint64_t *i1, size_t sz, const uint64_t *i2, uint64_t *o0);
(40)
subroutine archr_core_shift_left_1i8i8(integer(1) :: r, integer(1), parameter :: i1, integer(1), parameter :: i2)
(1)
subroutine archr_core_shift_left_1u8i8(integer(1) :: r, integer(1), parameter :: i1, integer(1), parameter :: i2)
(2)
subroutine archr_core_shift_left_1i16i16(integer(2) :: r, integer(2), parameter :: i1, integer(2), parameter :: i2)
(3)
subroutine archr_core_shift_left_1u16i16(integer(2) :: r, integer(2), parameter :: i1, integer(2), parameter :: i2)
(4)
subroutine archr_core_shift_left_1f32i32(real(4) :: r, real(4), parameter :: i1, integer(4), parameter :: i2)
(5)
subroutine archr_core_shift_left_1i32i32(integer(4) :: r, integer(4), parameter :: i1, integer(4), parameter :: i2)
(6)
subroutine archr_core_shift_left_1u32i32(integer(4) :: r, integer(4), parameter :: i1, integer(4), parameter :: i2)
(7)
subroutine archr_core_shift_left_1f64i64(real(8) :: r, real(8), parameter :: i1, integer(8), parameter :: i2)
(8)
subroutine archr_core_shift_left_1i64i64(integer(8) :: r, integer(8), parameter :: i1, integer(8), parameter :: i2)
(9)
subroutine archr_core_shift_left_1u64i64(integer(8) :: r, integer(8), parameter :: i1, integer(8), parameter :: i2)
(10)
subroutine archr_core_shift_left_1i8u8(integer(1) :: r, integer(1), parameter :: i1, integer(1), parameter :: i2)
(11)
subroutine archr_core_shift_left_1u8u8(integer(1) :: r, integer(1), parameter :: i1, integer(1), parameter :: i2)
(12)
subroutine archr_core_shift_left_1i16u16(integer(2) :: r, integer(2), parameter :: i1, integer(2), parameter :: i2)
(13)
subroutine archr_core_shift_left_1u16u16(integer(2) :: r, integer(2), parameter :: i1, integer(2), parameter :: i2)
(14)
subroutine archr_core_shift_left_1f32u32(real(4) :: r, real(4), parameter :: i1, integer(4), parameter :: i2)
(15)
subroutine archr_core_shift_left_1i32u32(integer(4) :: r, integer(4), parameter :: i1, integer(4), parameter :: i2)
(16)
subroutine archr_core_shift_left_1u32u32(integer(4) :: r, integer(4), parameter :: i1, integer(4), parameter :: i2)
(17)
subroutine archr_core_shift_left_1f64u64(real(8) :: r, real(8), parameter :: i1, integer(8), parameter :: i2)
(18)
subroutine archr_core_shift_left_1i64u64(integer(8) :: r, integer(8), parameter :: i1, integer(8), parameter :: i2)
(19)
subroutine archr_core_shift_left_1u64u64(integer(8) :: r, integer(8), parameter :: i1, integer(8), parameter :: i2)
(20)
subroutine archr_core_shift_left_f32i32(real(4), dimension(*), parameter :: i1, integer(4) :: sz, integer(4), dimension(*), parameter :: i2, real(4), dimension(*) :: o0)
(21)
subroutine archr_core_shift_left_i32i32(integer(4), dimension(*), parameter :: i1, integer(4) :: sz, integer(4), dimension(*), parameter :: i2, integer(4), dimension(*) :: o0)
(22)
subroutine archr_core_shift_left_u32i32(integer(4), dimension(*), parameter :: i1, integer(4) :: sz, integer(4), dimension(*), parameter :: i2, integer(4), dimension(*) :: o0)
(23)
subroutine archr_core_shift_left_f32u32(real(4), dimension(*), parameter :: i1, integer(4) :: sz, integer(4), dimension(*), parameter :: i2, real(4), dimension(*) :: o0)
(24)
subroutine archr_core_shift_left_i32u32(integer(4), dimension(*), parameter :: i1, integer(4) :: sz, integer(4), dimension(*), parameter :: i2, integer(4), dimension(*) :: o0)
(25)
subroutine archr_core_shift_left_u32u32(integer(4), dimension(*), parameter :: i1, integer(4) :: sz, integer(4), dimension(*), parameter :: i2, integer(4), dimension(*) :: o0)
(26)
def shift_left(i1, i2):
    return o0
(1)
function o0 = archr_core_shift_left(i1, i2)
(1)

Description

Computes the shift_left:

Parameters

i1_first, i1_last

The first range of input elements

i2

The beggining of the the second range of input elements

o0

The beginning of the destination range, may be equal to i1 or i2

i1, i2

The scalar/contiguous data input elements

Example


#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <stddef.h>
#include <archr/core/shift_left.h>

double rand_in(double min, double max) {
  return min + ((double)(max - min) * ((double)rand() / RAND_MAX));
}

int main() {
  time_t t;
  size_t i;
  size_t sz = 10;
  int32_t* i1 = (int32_t*)malloc(sz * sizeof(int32_t));
  int32_t* i2 = (int32_t*)malloc(sz * sizeof(int32_t));
  int32_t* o1 = (int32_t*)malloc(sz * sizeof(int32_t));

  srand((unsigned int)time(&t));
  for (i = 0; i < sz; ++i) {
    i1[i] = (int32_t)rand_in((int32_t)-10, (int32_t)10);
  i2[i] = (int32_t)rand_in((int32_t)0, (int32_t)10);
  }
  archr_core_shift_left_i32i32(o1, i1, sz, i2);
  for (i = 0; i < sz; ++i) {
    printf("%4lu: shift_left(%d, %d) = %d\n", i, i1[i], i2[i], o1[i]);
  }
}

Possible Output

   0: shift_left(-3, 5) = -96
   1: shift_left(2, 9) = 1024
   2: shift_left(-6, 3) = -48
   3: shift_left(-7, 2) = -28
   4: shift_left(-8, 3) = -64
   5: shift_left(9, 3) = 72
   6: shift_left(0, 0) = 0
   7: shift_left(6, 4) = 96
   8: shift_left(0, 2) = 0
   9: shift_left(2, 6) = 128

#include <ctime>
#include <cstdio>
#include <cstdlib>
#include <cstdint>
#include <cstddef>
#include <vector>
#include <algorithm>
#include <iomanip>
#include <iostream>
#include <archr/core/shift_left.hpp>

double rand_in(double min, double max) {
  return min + (double(max - min) * (double(std::rand()) / RAND_MAX));
}

int main() {
  std::size_t i;
  std::size_t sz = 10;
  std::vector<std::int32_t> i1(sz);
  std::vector<std::int32_t> i2(sz);
  std::vector<std::int32_t> o1(sz);

  std::srand(std::time(0));
  std::generate(i1.begin(), i1.end(), []() { return rand_in(std::int32_t(-10), std::int32_t(10)); });
  std::generate(i2.begin(), i2.end(), []() { return rand_in(std::int32_t(0), std::int32_t(10)); });
  archr::core::shift_left(i1.data(), sz, i2.data(), o1.data());
  for (i = 0; i < sz; ++i) {
    std::cout << std::setw(4) << i << ": " << "shift_left" << "(" << i1[i] << ", " << i2[i] << ")" << " = " << o1[i] << std::endl;
  }
}

Possible Output

   0: shift_left(9, 4) = 144
   1: shift_left(1, 1) = 2
   2: shift_left(-3, 5) = -96
   3: shift_left(-7, 5) = -224
   4: shift_left(-5, 3) = -40
   5: shift_left(-8, 0) = -8
   6: shift_left(4, 3) = 32
   7: shift_left(9, 0) = 9
   8: shift_left(5, 9) = 2560
   9: shift_left(6, 9) = 3072

program main
  integer(4), parameter  :: sz = 10
  integer(4), dimension(sz) :: o0
  integer(4), dimension(sz) :: i0
  integer(4), dimension(sz) :: i1
  real(8)                :: r0, r1
  real(8)                :: min0, max0
  real(8)                :: min1, max1
  real(8)                :: min2, max2
  ! Init:
    min0 = -10
    max0 = 10
    min1 = 0
    max1 = 10
  do i=1,sz
    r0 = random_in(min0, max0)
    r1 = random_in(min1, max1)
    i0(i) = int(r0)
    i1(i) = int(r1)
  end do
  ! Example:
  call archr_core_shift_left_i32i32(o0, i0, size(i0), i1)
  ! Output:
  do i=1,sz
    print *, i, ": ", o0(i)
  end do
contains
  ! Generate a random number within a range
  function random_in(mn, mx) result(r)
    real(8) :: r
    real(8), intent(in) :: mn, mx
    r = mn + (rand() * (mx - mn))
  end function random_in
end program

Possible Output

           1 :   -301989888
           2 :            5
           3 :            0
           4 :          -72
           5 :          768
           6 :           -2
           7 :     50331648
           8 :           -8
           9 :     25165824
          10 :    -33554432