Class LibDivide


  • public class LibDivide
    extends java.lang.Object
    Native bindings to libdivide.

    libdivide allows you to replace expensive integer divides with comparatively cheap multiplication and bitshifts. Compilers usually do this, but only when the divisor is known at compile time. libdivide allows you to take advantage of it at runtime. The result is that integer division can become faster - a lot faster.

    LWJGL: This is a hybrid implementation. Divider recovery methods use standard JNI bindings. All *_gen, *_do & *_get_algorithm functions have been ported to pure Java. This eliminates the JNI overhead and enables the JVM to inline and further optimize these methods.

    • Method Detail

      • nlibdivide_s32_recover

        public static int nlibdivide_s32_recover​(long denom)
      • libdivide_s32_recover

        public static int libdivide_s32_recover​(LibDivideS32 denom)
      • nlibdivide_u32_recover

        public static int nlibdivide_u32_recover​(long denom)
      • libdivide_u32_recover

        public static int libdivide_u32_recover​(LibDivideU32 denom)
      • nlibdivide_s64_recover

        public static long nlibdivide_s64_recover​(long denom)
      • libdivide_s64_recover

        public static long libdivide_s64_recover​(LibDivideS64 denom)
      • nlibdivide_u64_recover

        public static long nlibdivide_u64_recover​(long denom)
      • libdivide_u64_recover

        public static long libdivide_u64_recover​(LibDivideU64 denom)
      • nlibdivide_s32_branchfree_recover

        public static int nlibdivide_s32_branchfree_recover​(long denom)
      • libdivide_s32_branchfree_recover

        public static int libdivide_s32_branchfree_recover​(LibDivideS32BranchFree denom)
      • nlibdivide_u32_branchfree_recover

        public static int nlibdivide_u32_branchfree_recover​(long denom)
      • libdivide_u32_branchfree_recover

        public static int libdivide_u32_branchfree_recover​(LibDivideU32BranchFree denom)
      • nlibdivide_s64_branchfree_recover

        public static long nlibdivide_s64_branchfree_recover​(long denom)
      • libdivide_s64_branchfree_recover

        public static long libdivide_s64_branchfree_recover​(LibDivideS64BranchFree denom)
      • nlibdivide_u64_branchfree_recover

        public static long nlibdivide_u64_branchfree_recover​(long denom)
      • libdivide_u64_branchfree_recover

        public static long libdivide_u64_branchfree_recover​(LibDivideU64BranchFree denom)
      • libdivide_s32_do

        public static int libdivide_s32_do​(int numer,
                                           LibDivideS32 denom)
      • libdivide_u32_do

        public static int libdivide_u32_do​(int numer,
                                           LibDivideU32 denom)
      • libdivide_s64_do

        public static long libdivide_s64_do​(long numer,
                                            LibDivideS64 denom)
      • libdivide_u64_do

        public static long libdivide_u64_do​(long numer,
                                            LibDivideU64 denom)
      • libdivide_s32_branchfree_do

        public static int libdivide_s32_branchfree_do​(int numer,
                                                      LibDivideS32BranchFree denom)
      • libdivide_u32_branchfree_do

        public static int libdivide_u32_branchfree_do​(int numer,
                                                      LibDivideU32BranchFree denom)
      • libdivide_s64_branchfree_do

        public static long libdivide_s64_branchfree_do​(long numer,
                                                       LibDivideS64BranchFree denom)
      • libdivide_u64_branchfree_do

        public static long libdivide_u64_branchfree_do​(long numer,
                                                       LibDivideU64BranchFree denom)
      • libdivide_u32_get_algorithm

        public static int libdivide_u32_get_algorithm​(LibDivideU32 denom)
      • libdivide_u32_do_alg0

        public static int libdivide_u32_do_alg0​(int numer,
                                                LibDivideU32 denom)
      • libdivide_u32_do_alg1

        public static int libdivide_u32_do_alg1​(int numer,
                                                LibDivideU32 denom)
      • libdivide_u32_do_alg2

        public static int libdivide_u32_do_alg2​(int numer,
                                                LibDivideU32 denom)
      • libdivide_u64_get_algorithm

        public static int libdivide_u64_get_algorithm​(LibDivideU64 denom)
      • libdivide_u64_do_alg0

        public static long libdivide_u64_do_alg0​(long numer,
                                                 LibDivideU64 denom)
      • libdivide_u64_do_alg1

        public static long libdivide_u64_do_alg1​(long numer,
                                                 LibDivideU64 denom)
      • libdivide_u64_do_alg2

        public static long libdivide_u64_do_alg2​(long numer,
                                                 LibDivideU64 denom)
      • libdivide_s32_get_algorithm

        public static int libdivide_s32_get_algorithm​(LibDivideS32 denom)
      • libdivide_s32_do_alg0

        public static int libdivide_s32_do_alg0​(int numer,
                                                LibDivideS32 denom)
      • libdivide_s32_do_alg1

        public static int libdivide_s32_do_alg1​(int numer,
                                                LibDivideS32 denom)
      • libdivide_s32_do_alg2

        public static int libdivide_s32_do_alg2​(int numer,
                                                LibDivideS32 denom)
      • libdivide_s32_do_alg3

        public static int libdivide_s32_do_alg3​(int numer,
                                                LibDivideS32 denom)
      • libdivide_s32_do_alg4

        public static int libdivide_s32_do_alg4​(int numer,
                                                LibDivideS32 denom)
      • libdivide_s64_get_algorithm

        public static int libdivide_s64_get_algorithm​(LibDivideS64 denom)
      • libdivide_s64_do_alg0

        public static long libdivide_s64_do_alg0​(long numer,
                                                 LibDivideS64 denom)
      • libdivide_s64_do_alg1

        public static long libdivide_s64_do_alg1​(long numer,
                                                 LibDivideS64 denom)
      • libdivide_s64_do_alg2

        public static long libdivide_s64_do_alg2​(long numer,
                                                 LibDivideS64 denom)
      • libdivide_s64_do_alg3

        public static long libdivide_s64_do_alg3​(long numer,
                                                 LibDivideS64 denom)
      • libdivide_s64_do_alg4

        public static long libdivide_s64_do_alg4​(long numer,
                                                 LibDivideS64 denom)