Yeppp!
 All Classes Functions Variables Pages
Yeppp! library documentation for Java programmers

Introduction

Yeppp! is a high-performance SIMD-optimized mathematical library for x86, ARM, and MIPS processors on Windows, Android, Mac OS X, and GNU/Linux systems. Yeppp! functions are presented in several versions with optimizations for different processor microarchitectures. During initialization Yeppp! library detects the processor it is running on, and chooses the optimal function implementations.

Additionally, the library provides information about the CPU, such as processor vendor and microarchitecture, and an OS- and hardware-independent interface to processor cycle counters, and high-resolution timers.

File structure

Releases of Yeppp! library contain the following files relevant to Java programming:

LocationDescription
binaries/java-1.5/yeppp.jarPre-built JAR archive with Java bindings for Yeppp! (Java classes only). With this JAR you may write Yeppp! powered applications for all supported platforms. You will also need some of the platform-specific Yeppp! binaries to run your application.
binaries/java-1.5/yeppp-bundle.jarPre-built JAR archive with Java bindings for Yeppp! (Java classes and platform-specific binaries for Windows, Linux, and Mac OS X). With this JAR you may write Yeppp! powered applications for all supported platforms except Android. On start-up the Java code in this class will detect the platform it is running on and extract the proper platform-specific binaries (which are packed in this JAR). No additional DLLs/shared objects/shared libraries is needed when you use this JAR.
binaries/windows/amd64/Pre-built Yeppp! DLL and debug information files for x64 (64-bit) Windows
binaries/windows/x86/Pre-built Yeppp! DLL and debug information files for x86 (32-bit) Windows
binaries/android/armeabi/Pre-built Yeppp! shared object and debug symbols for Android ("armeabi" ABI)
binaries/android/armeabi-v7a/Pre-built Yeppp! shared object and debug symbols for Android ("armeabi-v7a" ABI)
binaries/android/x86/Pre-built Yeppp! shared object and debug symbols for Android ("x86" ABI)
binaries/android/mips/Pre-built Yeppp! shared object and debug symbols for Android ("mips" ABI)
binaries/linux/i586/Pre-built Yeppp! shared object and debug symbols for GNU/Linux on x86 architecture
binaries/linux/x86_64/Pre-built Yeppp! shared object and debug symbols for GNU/Linux on x86-64 (aka AMD64, x64, or Intel64) architecture
binaries/linux/armel/Pre-built Yeppp! shared object and debug symbols for GNU/Linux on ARM architecture with armel ABI (ARM EABI Little-Endian Soft-Float)
binaries/linux/armhf/Pre-built Yeppp! shared object and debug symbols for GNU/Linux on ARM architecture with armhf ABI (ARM EABI Little-Endian Hard-Float)
binaries/macosx/x86/Pre-built Yeppp! dynamic library and debug symbols for Mac OS X on x86 architecture
binaries/macosx/x86_64/Pre-built Yeppp! dynamic library and debug symbols for Mac OS X on x86-64 (aka AMD64, x64, or Intel64) architecture
bindings/java/sources-java/Source code of Yeppp! binaries for Java (Java classes only)
bindings/java/sources-jni/Source code of Yeppp! binaries for Java (C/JNI functions only)
examples/java/Examples of calling Yeppp! functions in Java code
docs/java/ Yeppp! documentation for Java programmers
SetVars.cmdWindows batch script to setup environment variables for Yeppp!
set-vars.shPOSIX shell script to setup environemnt variables for Yeppp! . Compatible with bash/dash/ksh/zsh on Linux and Mac OS X.

Getting Started

Using Yeppp! with IntelliJ IDEA (Java SE applications)

Download the recent release of Yeppp! from the official website.

Open the IDEA project where you want to use Yeppp! . Choose File->Project Structure in the main menu. The Project Structure diallog will appear on the screen.

Select the "Libraries" option group, click on New Project Library ("+") button in the top of the window, and choose "Java".

intellij-idea-new-project-library.png

In the "Select Library Files" diallog choose either yeppp.jar or yeppp-bundle.jar from binaries/java-1.5/ directory Yeppp! tree. yeppp.jar contains only Java classes, so you will have to specify which platform-specific binary of Yeppp! library to use when you run your Java application. yeppp-bundle.jar already includes platform-specific binaries for all supported platforms inside the JAR and chooses the right binary on start-up. However, this comes at the cost of larger JAR file and probably higher start-up time.

intellij-idea-select-library-files.png

Press OK in the Project Structure diallog to confirm addition of Yeppp! to the project.

intellij-idea-project-structure.png

If you decided to use yeppp.jar library (as opposed to yeppp-bundle.jar) you will need to specify platform-specific Yeppp! binaries for use when you run your application. Choose Run->Edit Configurations in the main menu. The Run/Debug Configurations diallog will appear on the screen. In the "VM Options" textbox add -Djava.library.path=<platform-specific-binaries-directory> where <platform-specific-binaries-directory> matches the platform of your Java VM (e.g. if you use 32-bit Java VM on 64-bit Windows you will have to specify the path to binaries/windows/x86/ directory in Yeppp! tree). See Yeppp! file structure for a list of platform-specific binaries directories.

intellij-idea-run-configurations.png

Now you are ready to use Yeppp!

Using Yeppp! with IntelliJ IDEA (Android applications)

Download the recent release of Yeppp! from the official website.

Open the IDEA project where you want to use Yeppp! . Choose File->Project Structure in the main menu. The Project Structure diallog will appear on the screen.

Select the "Libraries" option group, click on New Project Library ("+") button in the top of the window, and choose "Java".

intellij-idea-new-project-library.png

In the "Select Library Files" diallog choose either yeppp.jar from binaries/java-1.5/ directory Yeppp! tree.

intellij-idea-select-library-files.png

Select the "Facets" option group, and click on Android facet for your project. In the "Native libs directory" specify the full path to the binaries/android/ directory in Yeppp! tree. Press OK in the Project Structure diallog to confirm changes to Project Structure.

intellij-idea-project-structure-facets-android.png

Now you are ready to use Yeppp!

Using Yeppp! with Eclipse (Java SE applications)

Download the recent release of Yeppp! from the official website.

Open the Eclipse project where you want to use Yeppp! . Choose Project->Properties in the main menu. In the project properties diallog select the "Java Build Path" option group, and switch "Libraries" tab. Click on "Add External JARs" button and specify the path to either yeppp.jar or yeppp-bundle.jar from binaries/java-1.5/ directory Yeppp! tree. yeppp.jar contains only Java classes, so you will have to specify which platform-specific binary of Yeppp! library to use when you run your Java application. yeppp-bundle.jar already includes platform-specific binaries for all supported platforms inside the JAR and chooses the right binary on start-up. However, this comes at the cost of larger JAR file and probably higher start-up time. If you choose to use yeppp.jar also specify the path to platform-specific Yeppp! binaries in "Native library location". You should specify the path to platform-specific binaries for the platform of your Java VM (e.g. if you use 32-bit Java VM on 64-bit Windows you will have to specify the path to binaries/windows/x86/ directory in Yeppp! tree). See Yeppp! file structure for a list of platform-specific binaries directories.

eclipse-project-properties.png

Now you are ready to use Yeppp!

Using Yeppp! with command-line tools on Unix (Java SE applications)

Download the recent release of Yeppp! from the official website.

Open a terminal window where you plan to build your project. With Yeppp! we provide a shell script to set up environment variables. Navigate to Yeppp! directory and execute command

source set-vars.sh <arch>

If your shell does not support source command, use the equivalent command

. ./set-vars.sh <arch>

<arch> should specify the architecture/ABI of your Java VM. The following values are accepted:

You can also omit the <arch> parameter. This case the setup script will setup the environment according to your operating system architecture.

The set-vars.sh script adds the Yeppp! java bindings library yeppp.jar to CLASSPATH. It also sets environment variables to let the dynamic linker find Yeppp! when you execute a program which makes use of this library. Additionally, the script sets environment variable $YEPROOT to contain the path to Yeppp! installation directory, and $YEPBINARIES variable to contain the path to platform-specific Yeppp! binaries. You may use this variable to specify the search path for native library when running a Yeppp! powered Java application with JVM parameter -Djava.library.path=$YEPBINARIES.

Alternatively, you may use the JAR file yeppp-bundle.jar from $YEPROOT/binaries/java-1.5/ directory. yeppp-bundle.jar already includes platform-specific binaries for all supported platforms inside the JAR and chooses the right binary on start-up. However, this comes at the cost of larger JAR file and probably higher start-up time.

Now you are ready to use Yeppp!

Using Yeppp! with command-line tools on Windows (Java SE applications)

Download the recent release of Yeppp! from the official website. On Windows we recommend that you use the MSI installer for Yeppp! SDK. The installer will install the library components, and also set YEPROOT environment variable.

Open a command prompt window where you plan to build your project. With Yeppp! we provide a batch script to set up environment variables. In the Command Prompt window execute the command

"%YEPROOT%\SetVars.bat" <arch>

where <arch> should specify the architecture/ABI of your Java VM. The following values are accepted:

You can also omit the <arch> parameter. This case the setup script will setup the environment according to your operating system architecture.

The set-vars.sh script adds the Yeppp! java bindings library yeppp.jar to CLASSPATH. It also sets environment variables to let the operating system find Yeppp! when you execute a program which makes use of this library. Additionally, the script sets environment variable YEPROOT% to contain the path to Yeppp! installation directory, and YEPBINARIES% variable to contain the path to platform-specific Yeppp! binaries. You may use this variable to specify the search path for native library when running a Yeppp! powered Java application with JVM parameter -Djava.library.path=YEPBINARIES%.

Alternatively, you may use the JAR file yeppp-bundle.jar from YEPROOT%/binaries/java-1.5/ directory. yeppp-bundle.jar already includes platform-specific binaries for all supported platforms inside the JAR and chooses the right binary on start-up. However, this comes at the cost of larger JAR file and probably higher start-up time.

Now you are ready to use Yeppp!