├── .gitignore ├── README.md ├── compand.sh ├── compand_new.sh ├── output ├── arm64-v8a │ ├── libopenblas.a │ └── libopenblas_armv8-r0.2.20.dev.a ├── arm64-v8ainclude │ ├── cblas.h │ ├── f77blas.h │ ├── lapacke.h │ ├── lapacke_config.h │ ├── lapacke_mangling.h │ ├── lapacke_utils.h │ └── openblas_config.h ├── armeabi │ ├── libopenblas.a │ └── libopenblas_armv5-r0.2.20.dev.a ├── armeabiinclude │ ├── cblas.h │ ├── f77blas.h │ ├── lapacke.h │ ├── lapacke_config.h │ ├── lapacke_mangling.h │ ├── lapacke_utils.h │ └── openblas_config.h ├── armv7a │ ├── libopenblas.a │ └── libopenblas_armv7-r0.2.20.dev.a ├── armv7ainclude │ ├── cblas.h │ ├── f77blas.h │ ├── lapacke.h │ ├── lapacke_config.h │ ├── lapacke_mangling.h │ ├── lapacke_utils.h │ └── openblas_config.h ├── mips │ ├── libopenblas.a │ └── libopenblas_p5600-r0.2.20.dev.a ├── mips64 │ ├── libopenblas.a │ └── libopenblas_mips-r0.2.20.dev.a ├── mips64include │ ├── cblas.h │ ├── f77blas.h │ ├── lapacke.h │ ├── lapacke_config.h │ ├── lapacke_mangling.h │ ├── lapacke_utils.h │ └── openblas_config.h ├── mipsinclude │ ├── cblas.h │ ├── f77blas.h │ └── openblas_config.h ├── x86 │ ├── libopenblas.a │ └── libopenblas_atom-r0.2.20.dev.a ├── x86_64 │ ├── libopenblas.a │ └── libopenblas_atom-r0.2.20.dev.a ├── x86_64include │ ├── cblas.h │ ├── f77blas.h │ ├── lapacke.h │ ├── lapacke_config.h │ ├── lapacke_mangling.h │ ├── lapacke_utils.h │ └── openblas_config.h └── x86include │ ├── cblas.h │ ├── f77blas.h │ ├── lapacke.h │ ├── lapacke_config.h │ ├── lapacke_mangling.h │ ├── lapacke_utils.h │ └── openblas_config.h └── test ├── MMultOpenBlas.c ├── REF_MMult.c ├── compare_matrices.c ├── copy_matrix.c ├── dclock.c ├── jni ├── Android.mk ├── Android.mk~ ├── Application.mk ├── Application.mk~ └── Application21.mk ├── libs ├── arm64-v8a │ └── testblas.x ├── armeabi-v7a │ └── testblas.x ├── armeabi │ └── testblas.x ├── mips │ └── testblas.x ├── mips64 │ └── testblas.x ├── x86 │ └── testblas.x └── x86_64 │ └── testblas.x ├── parameters.h ├── print_matrix.c ├── random_matrix.c └── test_MMult.c /.gitignore: -------------------------------------------------------------------------------- 1 | output/OpenBLAS/ 2 | 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # openblasBuildForAndroid new 2 | 3 | bash compand_new.sh 4 | 5 | *Architectures* 6 | armv7a arm64-v8a x86 x86_64 7 | 8 | # openblasBuildForAndroid Old 9 | 10 | Run 11 | bash compand.sh all 12 | 13 | Run just for spesific architectures 14 | 15 | bash compand.sh arm64-v8a x86_64 16 | 17 | *Architectures* 18 | armeabi armv7a arm64-v8a mips mips64 x86 x86_64 19 | 20 | 21 | ##How to build test executable and test on device 22 | Assuming you build openblas and all its files are inside output folder. 23 | Go to **test/jni** folder and open terminal and run 24 | ``` 25 | export NDKROOT=`locate ndk-bundle | head -n 1` ; 26 | ${NDKROOT}/ndk-build 27 | ``` 28 | (**if you want binaries for 64bits** use ```${NDKROOT}/ndk-build NDK_APPLICATION_MK=Application21.mk``` ) 29 | It should leave executable binaries in **test/libs** folder named **testblas.x** 30 | PLug your device and copy appropriate exec file with **adb**. Assuming you cd to directory where exe file resides 31 | ``` 32 | ${NDKROOT}/../platform-tools/adb push testblas.x /data/local/tmp/ 33 | ``` 34 | Next you should open shell 35 | ``` 36 | ${NDKROOT}/../platform-tools/adb shell 37 | ``` 38 | Inside that shell 39 | ``` 40 | cd /data/local/tmp 41 | chmod 755 testblas.x 42 | ./testblas.x 43 | ``` 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /compand.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "Build for Android" 3 | APP_ABI="android-9" 4 | OUTPUT_DIR=${PWD} 5 | NDK_ROOT=$(locate ndk-bundle | head -1) 6 | echo "NDK_ROOT=$NDK_ROOT" 7 | PATHI=$PATH 8 | if [ ! -d "OpenBLAS" ]; then 9 | git clone https://github.com/xianyi/OpenBLAS.git 10 | fi 11 | 12 | 13 | if [ -d "OpenBLAS" ]; then 14 | cd OpenBLAS 15 | #fix mips nan format to legacy one 16 | sed -i 's/-mnan=2008//' Makefile.system 17 | sed -i 's|#include ||' kernel/arm/zdot.c 18 | sed -i 's|#include ||' kernel/mips/zdot.c 19 | sed -i 's/FLOAT _Complex/OPENBLAS_COMPLEX_FLOAT/' kernel/arm/zdot.c 20 | sed -i 's/FLOAT _Complex/OPENBLAS_COMPLEX_FLOAT/' kernel/mips/zdot.c 21 | else 22 | echo "Could not find OpenBLAS directory" 23 | exit -1 24 | fi 25 | 26 | if [ $1 = "all" ]; then 27 | architectureList=(armeabi armv7a arm64-v8a mips mips64 x86 x86_64 ) 28 | else 29 | architectureList=("$@") 30 | fi 31 | 32 | for architecture in ${architectureList[@]}; do 33 | echo ${architecture} 34 | case ${architecture} in 35 | "armeabi") 36 | APP_ABI="android-9" 37 | target="ARMV5" 38 | arch="arch-arm" 39 | CCFolder="arm-linux-androideabi-4.9" 40 | CC="arm-linux-androideabi-gcc" 41 | ;; 42 | "armv7a") 43 | APP_ABI="android-9" 44 | target="ARMV7" 45 | arch="arch-arm" 46 | CCFolder="arm-linux-androideabi-4.9" 47 | CC="arm-linux-androideabi-gcc" 48 | ;; 49 | "arm64-v8a") 50 | APP_ABI="android-21" 51 | target="ARMV8 BINARY=64" 52 | arch="arch-arm64" 53 | CCFolder="aarch64-linux-android-4.9" 54 | CC="aarch64-linux-android-gcc" 55 | ;; 56 | "mips") 57 | APP_ABI="android-9" 58 | target="P5600 AR=mipsel-linux-android-ar " 59 | arch="arch-mips" 60 | CCFolder="mipsel-linux-android-4.9" 61 | CC="mipsel-linux-android-gcc" ;; 62 | "mips64") 63 | APP_ABI="android-21" 64 | target="SICORTEX BINARY=64" 65 | arch="arch-mips64" 66 | CCFolder="mips64el-linux-android-4.9" 67 | CC="mips64el-linux-android-gcc" ;; 68 | "x86") 69 | APP_ABI="android-9" 70 | target="ATOM" 71 | arch="arch-x86" 72 | CCFolder="x86-4.9" 73 | CC="i686-linux-android-gcc" 74 | ;; 75 | "x86_64") 76 | APP_ABI="android-21" 77 | target="ATOM BINARY=64" 78 | arch="arch-x86_64" 79 | CCFolder="x86_64-4.9" 80 | CC="x86_64-linux-android-gcc" ;; 81 | *) 82 | echo "UNKNOWN" 83 | continue 84 | ;; 85 | esac 86 | 87 | echo ${NDK_ROOT}/toolchains/${CCFolder}/prebuilt/linux-x86_64/bin 88 | export PATH=${NDK_ROOT}/toolchains/${CCFolder}/prebuilt/linux-x86_64/bin:${PATHI} 89 | command="make TARGET=${target} HOSTCC=gcc CC=${CC} USE_THREAD=0 NOFORTRAN=1 CFLAGS=--sysroot=${NDK_ROOT}/platforms/${APP_ABI}/${arch}" 90 | 91 | echo $command 92 | mkdir -p ../${architecture} 93 | make clean 94 | $command 95 | make PREFIX=${OUTPUT_DIR}/${architecture} install 96 | mv ${OUTPUT_DIR}/${architecture}/lib/*.a ${OUTPUT_DIR}/${architecture}/ 97 | rm -rf ${OUTPUT_DIR}/${architecture}/lib 98 | rm -rf ${OUTPUT_DIR}/${architecture}/bin 99 | #if [ ! -d "${OUTPUT_DIR}/include" ]; then 100 | mv ${OUTPUT_DIR}/${architecture}/include ${OUTPUT_DIR}/${architecture}include/ 101 | #else 102 | # rm -rf ${OUTPUT_DIR}/${architecture}/include 103 | #fi 104 | 105 | done 106 | -------------------------------------------------------------------------------- /compand_new.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | SOURCE="${BASH_SOURCE[0]}" 4 | while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink 5 | DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )" 6 | SOURCE="$(readlink "$SOURCE")" 7 | [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located 8 | done 9 | BASE_DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )" 10 | 11 | function message { 12 | echo ":: ${@}" 13 | } 14 | 15 | function rename_top_folder { 16 | for dir in ${1}/* 17 | do 18 | if [ -d "$dir" ] 19 | then 20 | mv "${dir}" "${1}/folder/" 21 | message "${dir} => ${1}/folder/" 22 | break 23 | fi 24 | done 25 | } 26 | 27 | function check_requirements { 28 | for i in "${@}" 29 | do 30 | if [ ! -e "$i" ]; then 31 | message "missing: ${i}" 32 | exit -2 33 | fi 34 | done 35 | } 36 | 37 | function git_check { 38 | #$1 is url #$2 is dir #$3 is tag or branch if optional 39 | command= 40 | if [ -n "$3" ]; then 41 | command="git clone --quiet --depth 1 --branch ${3} ${1} ${2}" 42 | else 43 | command="git clone --quiet ${1} ${2}" 44 | fi 45 | message "$command" 46 | $command 47 | check_requirements "${2}" 48 | } 49 | 50 | function download_extract_base { 51 | #$1 is url #2 is dir $3 is extract argument 52 | if [ ! -f ${3}_file ]; then 53 | message "download" 54 | wget --quiet --show-progress -O ${3}_file ${2} 55 | fi 56 | 57 | message "extract $@" 58 | #extract 59 | mkdir -p ${3} 60 | if [ ${1} = "-unzip" ]; then 61 | command="unzip -qq ${3}_file -d ${3} " 62 | else 63 | command="tar ${1} ${3}_file --directory=${3} " 64 | fi 65 | message $command 66 | $command 67 | check_requirements "${3}" 68 | } 69 | 70 | function download_extract { 71 | download_extract_base -xzf $@ 72 | } 73 | 74 | function download_extract_xz { 75 | download_extract_base -xf $@ 76 | } 77 | 78 | function download_extract_unzip { 79 | download_extract_base -unzip $@ 80 | } 81 | 82 | ANDROID_API=21 83 | TARGET_ARRS=( "armv7a" "arm64-v8a" "x86" "x86_64" ) 84 | OPENBLAS_TARGETS=( "ARMV7" "ARMV8" "ATOM" "ATOM" ) 85 | COMPILER_PREFIXES=( "armv7a-linux-androideabi" "aarch64-linux-android" "i686-linux-android" "x86_64-linux-android" ) 86 | TOOLCHAIN_PREFIXES=( "arm-linux-androideabi" "aarch64-linux-android" "i686-linux-android" "x86_64-linux-android" ) 87 | XTRA_FLAGS=( "ARM_SOFTFP_ABI=1" " BINARY=64" "" " BINARY=64" ) 88 | NDK_URL="https://dl.google.com/android/repository/android-ndk-r21d-linux-x86_64.zip" 89 | NDK_DIR="${BASE_DIR}/compile_tools/" 90 | OPENBLAS_GIT_URL="https://github.com/xianyi/OpenBLAS.git" 91 | OPENBLAS_DIR=${BASE_DIR}/OpenBLAS 92 | mkdir -p ${NDK_DIR} 93 | mkdir -p ${BASE_DIR} 94 | mkdir -p ${BASE_DIR}/output_new 95 | #change directory to base 96 | cd $BASE_DIR 97 | 98 | if [ ! -d ${NDK_DIR}/folder ]; then 99 | #out file 100 | message "download NDK" 101 | download_extract_unzip ${NDK_URL} ${NDK_DIR} 102 | message "rename top folder" 103 | rename_top_folder ${NDK_DIR} 104 | fi 105 | 106 | NDK_DIR="${NDK_DIR}/folder" 107 | ANDROID_TOOLCHAIN=${NDK_DIR}/toolchains/llvm/prebuilt/linux-x86_64 108 | 109 | #lets build OpenBlas 110 | if [ ! -d "${OPENBLAS_DIR}" ]; then 111 | message "download OpenBLAS" 112 | git_check "${OPENBLAS_GIT_URL}" "${OPENBLAS_DIR}" "v0.3.10" 113 | fi 114 | cd ${OPENBLAS_DIR} 115 | 116 | for i in "${!TARGET_ARRS[@]}"; do 117 | 118 | TARGET=${OPENBLAS_TARGETS[$i]} 119 | DEST_DIR="${BASE_DIR}/output_new/${TARGET_ARRS[${i}]}" 120 | COMPILER_PREFIX="${ANDROID_TOOLCHAIN}/bin/${COMPILER_PREFIXES[$i]}${ANDROID_API}" 121 | TOOLCHAIN_PREFIX="${ANDROID_TOOLCHAIN}/bin/${TOOLCHAIN_PREFIXES[$i]}" 122 | XTRA="CC=${COMPILER_PREFIX}-clang AR=${TOOLCHAIN_PREFIX}-ar RANLIB=${TOOLCHAIN_PREFIX}-ranlib ${XTRA_FLAGS[$i]} " 123 | check_requirements ${COMPILER_PREFIX}-clang 124 | make clean 125 | message "build and install OpenBLAS" 126 | command="make TARGET=${TARGET} HOSTCC=gcc NOFORTRAN=1 ${XTRA} " 127 | message $command 128 | eval $command &>/dev/null 129 | message "install it" 130 | mkdir -p ${DEST_DIR} 131 | command="make TARGET=${TARGET} PREFIX=${DEST_DIR} install &>dev/null" 132 | message $command 133 | $command 134 | check_requirements ${DEST_DIR}/lib/libopenblas.so 135 | 136 | done 137 | -------------------------------------------------------------------------------- /output/arm64-v8a/libopenblas.a: -------------------------------------------------------------------------------- 1 | libopenblas_armv8-r0.2.20.dev.a -------------------------------------------------------------------------------- /output/arm64-v8a/libopenblas_armv8-r0.2.20.dev.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quickwritereader/openblasBuildForAndroid/f3c63ea37276d079ccbf33f44e8e36474756c57b/output/arm64-v8a/libopenblas_armv8-r0.2.20.dev.a -------------------------------------------------------------------------------- /output/arm64-v8ainclude/lapacke_config.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | Copyright (c) 2010, Intel Corp. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | * Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | * Neither the name of Intel Corporation nor the names of its contributors 14 | may be used to endorse or promote products derived from this software 15 | without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 27 | THE POSSIBILITY OF SUCH DAMAGE. 28 | ****************************************************************************** 29 | * Contents: Native C interface to LAPACK 30 | * Author: Intel Corporation 31 | * Generated May, 2011 32 | *****************************************************************************/ 33 | 34 | #ifndef _LAPACKE_CONFIG_H_ 35 | #define _LAPACKE_CONFIG_H_ 36 | 37 | // For Android prior to API 21 (no include) 38 | #if defined(__ANDROID__) 39 | #if __ANDROID_API__ < 21 40 | #define LAPACK_COMPLEX_STRUCTURE 41 | #endif 42 | #endif 43 | 44 | #ifdef __cplusplus 45 | #if defined(LAPACK_COMPLEX_CPP) 46 | #include 47 | #endif 48 | extern "C" { 49 | #endif /* __cplusplus */ 50 | 51 | #include 52 | 53 | #ifndef lapack_int 54 | #if defined(LAPACK_ILP64) 55 | #define lapack_int long 56 | #else 57 | #define lapack_int int 58 | #endif 59 | #endif 60 | 61 | #ifndef lapack_logical 62 | #define lapack_logical lapack_int 63 | #endif 64 | 65 | #ifndef LAPACK_COMPLEX_CUSTOM 66 | 67 | #if defined(LAPACK_COMPLEX_STRUCTURE) 68 | 69 | typedef struct { float real, imag; } _lapack_complex_float; 70 | typedef struct { double real, imag; } _lapack_complex_double; 71 | #define lapack_complex_float _lapack_complex_float 72 | #define lapack_complex_double _lapack_complex_double 73 | #define lapack_complex_float_real(z) ((z).real) 74 | #define lapack_complex_float_imag(z) ((z).imag) 75 | #define lapack_complex_double_real(z) ((z).real) 76 | #define lapack_complex_double_imag(z) ((z).imag) 77 | 78 | #elif defined(LAPACK_COMPLEX_C99) 79 | 80 | #include 81 | #define lapack_complex_float float _Complex 82 | #define lapack_complex_double double _Complex 83 | #define lapack_complex_float_real(z) (creal(z)) 84 | #define lapack_complex_float_imag(z) (cimag(z)) 85 | #define lapack_complex_double_real(z) (creal(z)) 86 | #define lapack_complex_double_imag(z) (cimag(z)) 87 | 88 | #elif defined(LAPACK_COMPLEX_CPP) 89 | 90 | #define lapack_complex_float std::complex 91 | #define lapack_complex_double std::complex 92 | #define lapack_complex_float_real(z) ((z).real()) 93 | #define lapack_complex_float_imag(z) ((z).imag()) 94 | #define lapack_complex_double_real(z) ((z).real()) 95 | #define lapack_complex_double_imag(z) ((z).imag()) 96 | 97 | #else 98 | 99 | #include 100 | #define lapack_complex_float float _Complex 101 | #define lapack_complex_double double _Complex 102 | #define lapack_complex_float_real(z) (creal(z)) 103 | #define lapack_complex_float_imag(z) (cimag(z)) 104 | #define lapack_complex_double_real(z) (creal(z)) 105 | #define lapack_complex_double_imag(z) (cimag(z)) 106 | 107 | #endif 108 | 109 | lapack_complex_float lapack_make_complex_float( float re, float im ); 110 | lapack_complex_double lapack_make_complex_double( double re, double im ); 111 | 112 | #endif 113 | 114 | #ifndef LAPACK_malloc 115 | #define LAPACK_malloc( size ) malloc( size ) 116 | #endif 117 | 118 | #ifndef LAPACK_free 119 | #define LAPACK_free( p ) free( p ) 120 | #endif 121 | 122 | #ifdef __cplusplus 123 | } 124 | #endif /* __cplusplus */ 125 | 126 | #endif /* _LAPACKE_CONFIG_H_ */ 127 | -------------------------------------------------------------------------------- /output/arm64-v8ainclude/lapacke_mangling.h: -------------------------------------------------------------------------------- 1 | #ifndef LAPACK_HEADER_INCLUDED 2 | #define LAPACK_HEADER_INCLUDED 3 | 4 | #ifndef LAPACK_GLOBAL 5 | #if defined(LAPACK_GLOBAL_PATTERN_LC) || defined(ADD_) 6 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname##_ 7 | #elif defined(LAPACK_GLOBAL_PATTERN_UC) || defined(UPPER) 8 | #define LAPACK_GLOBAL(lcname,UCNAME) UCNAME 9 | #elif defined(LAPACK_GLOBAL_PATTERN_MC) || defined(NOCHANGE) 10 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname 11 | #else 12 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname##_ 13 | #endif 14 | #endif 15 | 16 | #endif 17 | 18 | -------------------------------------------------------------------------------- /output/arm64-v8ainclude/openblas_config.h: -------------------------------------------------------------------------------- 1 | #ifndef OPENBLAS_CONFIG_H 2 | #define OPENBLAS_CONFIG_H 3 | #define OPENBLAS_OS_ANDROID 1 4 | #define OPENBLAS_ARCH_ARM64 1 5 | #define OPENBLAS_C_GCC 1 6 | #define OPENBLAS___64BIT__ 1 7 | #define OPENBLAS_PTHREAD_CREATE_FUNC pthread_create 8 | #define OPENBLAS_BUNDERSCORE _ 9 | #define OPENBLAS_NEEDBUNDERSCORE 1 10 | #define OPENBLAS_ARMV8 11 | #define OPENBLAS_L1_DATA_SIZE 32768 12 | #define OPENBLAS_L1_DATA_LINESIZE 64 13 | #define OPENBLAS_L2_SIZE 262144 14 | #define OPENBLAS_L2_LINESIZE 64 15 | #define OPENBLAS_DTB_DEFAULT_ENTRIES 64 16 | #define OPENBLAS_DTB_SIZE 4096 17 | #define OPENBLAS_L2_ASSOCIATIVE 32 18 | #define OPENBLAS_CORE_ARMV8 19 | #define OPENBLAS_CHAR_CORENAME "ARMV8" 20 | #define OPENBLAS_GEMM_MULTITHREAD_THRESHOLD 4 21 | #define OPENBLAS_VERSION " OpenBLAS 0.2.20.dev " 22 | /*This is only for "make install" target.*/ 23 | 24 | #if defined(OPENBLAS_OS_WINNT) || defined(OPENBLAS_OS_CYGWIN_NT) || defined(OPENBLAS_OS_INTERIX) 25 | #define OPENBLAS_WINDOWS_ABI 26 | #define OPENBLAS_OS_WINDOWS 27 | 28 | #ifdef DOUBLE 29 | #define DOUBLE_DEFINED DOUBLE 30 | #undef DOUBLE 31 | #endif 32 | #endif 33 | 34 | #ifdef OPENBLAS_NEEDBUNDERSCORE 35 | #define BLASFUNC(FUNC) FUNC##_ 36 | #else 37 | #define BLASFUNC(FUNC) FUNC 38 | #endif 39 | 40 | #ifdef OPENBLAS_QUAD_PRECISION 41 | typedef struct { 42 | unsigned long x[2]; 43 | } xdouble; 44 | #elif defined OPENBLAS_EXPRECISION 45 | #define xdouble long double 46 | #else 47 | #define xdouble double 48 | #endif 49 | 50 | #if defined(OPENBLAS_OS_WINDOWS) && defined(OPENBLAS___64BIT__) 51 | typedef long long BLASLONG; 52 | typedef unsigned long long BLASULONG; 53 | #else 54 | typedef long BLASLONG; 55 | typedef unsigned long BLASULONG; 56 | #endif 57 | 58 | #ifdef OPENBLAS_USE64BITINT 59 | typedef BLASLONG blasint; 60 | #else 61 | typedef int blasint; 62 | #endif 63 | 64 | #if defined(XDOUBLE) || defined(DOUBLE) 65 | #define FLOATRET FLOAT 66 | #else 67 | #ifdef NEED_F2CCONV 68 | #define FLOATRET double 69 | #else 70 | #define FLOATRET float 71 | #endif 72 | #endif 73 | 74 | /* Inclusion of a standard header file is needed for definition of __STDC_* 75 | predefined macros with some compilers (e.g. GCC 4.7 on Linux). This occurs 76 | as a side effect of including either or . */ 77 | #include 78 | 79 | /* C99 supports complex floating numbers natively, which GCC also offers as an 80 | extension since version 3.0. If neither are available, use a compatible 81 | structure as fallback (see Clause 6.2.5.13 of the C99 standard). */ 82 | #if ((defined(__STDC_IEC_559_COMPLEX__) || __STDC_VERSION__ >= 199901L || \ 83 | (__GNUC__ >= 3 && !defined(__cplusplus))) && !(defined(FORCE_OPENBLAS_COMPLEX_STRUCT))) 84 | #define OPENBLAS_COMPLEX_C99 85 | #ifndef __cplusplus 86 | #include 87 | #endif 88 | typedef float _Complex openblas_complex_float; 89 | typedef double _Complex openblas_complex_double; 90 | typedef xdouble _Complex openblas_complex_xdouble; 91 | #define openblas_make_complex_float(real, imag) ((real) + ((imag) * _Complex_I)) 92 | #define openblas_make_complex_double(real, imag) ((real) + ((imag) * _Complex_I)) 93 | #define openblas_make_complex_xdouble(real, imag) ((real) + ((imag) * _Complex_I)) 94 | #define openblas_complex_float_real(z) (creal(z)) 95 | #define openblas_complex_float_imag(z) (cimag(z)) 96 | #define openblas_complex_double_real(z) (creal(z)) 97 | #define openblas_complex_double_imag(z) (cimag(z)) 98 | #define openblas_complex_xdouble_real(z) (creal(z)) 99 | #define openblas_complex_xdouble_imag(z) (cimag(z)) 100 | #else 101 | #define OPENBLAS_COMPLEX_STRUCT 102 | typedef struct { float real, imag; } openblas_complex_float; 103 | typedef struct { double real, imag; } openblas_complex_double; 104 | typedef struct { xdouble real, imag; } openblas_complex_xdouble; 105 | #define openblas_make_complex_float(real, imag) {(real), (imag)} 106 | #define openblas_make_complex_double(real, imag) {(real), (imag)} 107 | #define openblas_make_complex_xdouble(real, imag) {(real), (imag)} 108 | #define openblas_complex_float_real(z) ((z).real) 109 | #define openblas_complex_float_imag(z) ((z).imag) 110 | #define openblas_complex_double_real(z) ((z).real) 111 | #define openblas_complex_double_imag(z) ((z).imag) 112 | #define openblas_complex_xdouble_real(z) ((z).real) 113 | #define openblas_complex_xdouble_imag(z) ((z).imag) 114 | #endif 115 | #endif /* OPENBLAS_CONFIG_H */ 116 | -------------------------------------------------------------------------------- /output/armeabi/libopenblas.a: -------------------------------------------------------------------------------- 1 | libopenblas_armv5-r0.2.20.dev.a -------------------------------------------------------------------------------- /output/armeabi/libopenblas_armv5-r0.2.20.dev.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quickwritereader/openblasBuildForAndroid/f3c63ea37276d079ccbf33f44e8e36474756c57b/output/armeabi/libopenblas_armv5-r0.2.20.dev.a -------------------------------------------------------------------------------- /output/armeabiinclude/lapacke_config.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | Copyright (c) 2010, Intel Corp. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | * Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | * Neither the name of Intel Corporation nor the names of its contributors 14 | may be used to endorse or promote products derived from this software 15 | without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 27 | THE POSSIBILITY OF SUCH DAMAGE. 28 | ****************************************************************************** 29 | * Contents: Native C interface to LAPACK 30 | * Author: Intel Corporation 31 | * Generated May, 2011 32 | *****************************************************************************/ 33 | 34 | #ifndef _LAPACKE_CONFIG_H_ 35 | #define _LAPACKE_CONFIG_H_ 36 | 37 | // For Android prior to API 21 (no include) 38 | #if defined(__ANDROID__) 39 | #if __ANDROID_API__ < 21 40 | #define LAPACK_COMPLEX_STRUCTURE 41 | #endif 42 | #endif 43 | 44 | #ifdef __cplusplus 45 | #if defined(LAPACK_COMPLEX_CPP) 46 | #include 47 | #endif 48 | extern "C" { 49 | #endif /* __cplusplus */ 50 | 51 | #include 52 | 53 | #ifndef lapack_int 54 | #if defined(LAPACK_ILP64) 55 | #define lapack_int long 56 | #else 57 | #define lapack_int int 58 | #endif 59 | #endif 60 | 61 | #ifndef lapack_logical 62 | #define lapack_logical lapack_int 63 | #endif 64 | 65 | #ifndef LAPACK_COMPLEX_CUSTOM 66 | 67 | #if defined(LAPACK_COMPLEX_STRUCTURE) 68 | 69 | typedef struct { float real, imag; } _lapack_complex_float; 70 | typedef struct { double real, imag; } _lapack_complex_double; 71 | #define lapack_complex_float _lapack_complex_float 72 | #define lapack_complex_double _lapack_complex_double 73 | #define lapack_complex_float_real(z) ((z).real) 74 | #define lapack_complex_float_imag(z) ((z).imag) 75 | #define lapack_complex_double_real(z) ((z).real) 76 | #define lapack_complex_double_imag(z) ((z).imag) 77 | 78 | #elif defined(LAPACK_COMPLEX_C99) 79 | 80 | #include 81 | #define lapack_complex_float float _Complex 82 | #define lapack_complex_double double _Complex 83 | #define lapack_complex_float_real(z) (creal(z)) 84 | #define lapack_complex_float_imag(z) (cimag(z)) 85 | #define lapack_complex_double_real(z) (creal(z)) 86 | #define lapack_complex_double_imag(z) (cimag(z)) 87 | 88 | #elif defined(LAPACK_COMPLEX_CPP) 89 | 90 | #define lapack_complex_float std::complex 91 | #define lapack_complex_double std::complex 92 | #define lapack_complex_float_real(z) ((z).real()) 93 | #define lapack_complex_float_imag(z) ((z).imag()) 94 | #define lapack_complex_double_real(z) ((z).real()) 95 | #define lapack_complex_double_imag(z) ((z).imag()) 96 | 97 | #else 98 | 99 | #include 100 | #define lapack_complex_float float _Complex 101 | #define lapack_complex_double double _Complex 102 | #define lapack_complex_float_real(z) (creal(z)) 103 | #define lapack_complex_float_imag(z) (cimag(z)) 104 | #define lapack_complex_double_real(z) (creal(z)) 105 | #define lapack_complex_double_imag(z) (cimag(z)) 106 | 107 | #endif 108 | 109 | lapack_complex_float lapack_make_complex_float( float re, float im ); 110 | lapack_complex_double lapack_make_complex_double( double re, double im ); 111 | 112 | #endif 113 | 114 | #ifndef LAPACK_malloc 115 | #define LAPACK_malloc( size ) malloc( size ) 116 | #endif 117 | 118 | #ifndef LAPACK_free 119 | #define LAPACK_free( p ) free( p ) 120 | #endif 121 | 122 | #ifdef __cplusplus 123 | } 124 | #endif /* __cplusplus */ 125 | 126 | #endif /* _LAPACKE_CONFIG_H_ */ 127 | -------------------------------------------------------------------------------- /output/armeabiinclude/lapacke_mangling.h: -------------------------------------------------------------------------------- 1 | #ifndef LAPACK_HEADER_INCLUDED 2 | #define LAPACK_HEADER_INCLUDED 3 | 4 | #ifndef LAPACK_GLOBAL 5 | #if defined(LAPACK_GLOBAL_PATTERN_LC) || defined(ADD_) 6 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname##_ 7 | #elif defined(LAPACK_GLOBAL_PATTERN_UC) || defined(UPPER) 8 | #define LAPACK_GLOBAL(lcname,UCNAME) UCNAME 9 | #elif defined(LAPACK_GLOBAL_PATTERN_MC) || defined(NOCHANGE) 10 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname 11 | #else 12 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname##_ 13 | #endif 14 | #endif 15 | 16 | #endif 17 | 18 | -------------------------------------------------------------------------------- /output/armeabiinclude/openblas_config.h: -------------------------------------------------------------------------------- 1 | #ifndef OPENBLAS_CONFIG_H 2 | #define OPENBLAS_CONFIG_H 3 | #define OPENBLAS_OS_ANDROID 1 4 | #define OPENBLAS_ARCH_ARM 1 5 | #define OPENBLAS_C_GCC 1 6 | #define OPENBLAS___32BIT__ 1 7 | #define OPENBLAS_PTHREAD_CREATE_FUNC pthread_create 8 | #define OPENBLAS_BUNDERSCORE _ 9 | #define OPENBLAS_NEEDBUNDERSCORE 1 10 | #define OPENBLAS_ARMV5 11 | #define OPENBLAS_L1_DATA_SIZE 65536 12 | #define OPENBLAS_L1_DATA_LINESIZE 32 13 | #define OPENBLAS_L2_SIZE 512488 14 | #define OPENBLAS_L2_LINESIZE 32 15 | #define OPENBLAS_DTB_DEFAULT_ENTRIES 64 16 | #define OPENBLAS_DTB_SIZE 4096 17 | #define OPENBLAS_L2_ASSOCIATIVE 4 18 | #define OPENBLAS_CORE_ARMV5 19 | #define OPENBLAS_CHAR_CORENAME "ARMV5" 20 | #define OPENBLAS_GEMM_MULTITHREAD_THRESHOLD 4 21 | #define OPENBLAS_VERSION " OpenBLAS 0.2.20.dev " 22 | /*This is only for "make install" target.*/ 23 | 24 | #if defined(OPENBLAS_OS_WINNT) || defined(OPENBLAS_OS_CYGWIN_NT) || defined(OPENBLAS_OS_INTERIX) 25 | #define OPENBLAS_WINDOWS_ABI 26 | #define OPENBLAS_OS_WINDOWS 27 | 28 | #ifdef DOUBLE 29 | #define DOUBLE_DEFINED DOUBLE 30 | #undef DOUBLE 31 | #endif 32 | #endif 33 | 34 | #ifdef OPENBLAS_NEEDBUNDERSCORE 35 | #define BLASFUNC(FUNC) FUNC##_ 36 | #else 37 | #define BLASFUNC(FUNC) FUNC 38 | #endif 39 | 40 | #ifdef OPENBLAS_QUAD_PRECISION 41 | typedef struct { 42 | unsigned long x[2]; 43 | } xdouble; 44 | #elif defined OPENBLAS_EXPRECISION 45 | #define xdouble long double 46 | #else 47 | #define xdouble double 48 | #endif 49 | 50 | #if defined(OPENBLAS_OS_WINDOWS) && defined(OPENBLAS___64BIT__) 51 | typedef long long BLASLONG; 52 | typedef unsigned long long BLASULONG; 53 | #else 54 | typedef long BLASLONG; 55 | typedef unsigned long BLASULONG; 56 | #endif 57 | 58 | #ifdef OPENBLAS_USE64BITINT 59 | typedef BLASLONG blasint; 60 | #else 61 | typedef int blasint; 62 | #endif 63 | 64 | #if defined(XDOUBLE) || defined(DOUBLE) 65 | #define FLOATRET FLOAT 66 | #else 67 | #ifdef NEED_F2CCONV 68 | #define FLOATRET double 69 | #else 70 | #define FLOATRET float 71 | #endif 72 | #endif 73 | 74 | /* Inclusion of a standard header file is needed for definition of __STDC_* 75 | predefined macros with some compilers (e.g. GCC 4.7 on Linux). This occurs 76 | as a side effect of including either or . */ 77 | #include 78 | 79 | /* C99 supports complex floating numbers natively, which GCC also offers as an 80 | extension since version 3.0. If neither are available, use a compatible 81 | structure as fallback (see Clause 6.2.5.13 of the C99 standard). */ 82 | #if ((defined(__STDC_IEC_559_COMPLEX__) || __STDC_VERSION__ >= 199901L || \ 83 | (__GNUC__ >= 3 && !defined(__cplusplus))) && !(defined(FORCE_OPENBLAS_COMPLEX_STRUCT))) 84 | #define OPENBLAS_COMPLEX_C99 85 | #ifndef __cplusplus 86 | #include 87 | #endif 88 | typedef float _Complex openblas_complex_float; 89 | typedef double _Complex openblas_complex_double; 90 | typedef xdouble _Complex openblas_complex_xdouble; 91 | #define openblas_make_complex_float(real, imag) ((real) + ((imag) * _Complex_I)) 92 | #define openblas_make_complex_double(real, imag) ((real) + ((imag) * _Complex_I)) 93 | #define openblas_make_complex_xdouble(real, imag) ((real) + ((imag) * _Complex_I)) 94 | #define openblas_complex_float_real(z) (creal(z)) 95 | #define openblas_complex_float_imag(z) (cimag(z)) 96 | #define openblas_complex_double_real(z) (creal(z)) 97 | #define openblas_complex_double_imag(z) (cimag(z)) 98 | #define openblas_complex_xdouble_real(z) (creal(z)) 99 | #define openblas_complex_xdouble_imag(z) (cimag(z)) 100 | #else 101 | #define OPENBLAS_COMPLEX_STRUCT 102 | typedef struct { float real, imag; } openblas_complex_float; 103 | typedef struct { double real, imag; } openblas_complex_double; 104 | typedef struct { xdouble real, imag; } openblas_complex_xdouble; 105 | #define openblas_make_complex_float(real, imag) {(real), (imag)} 106 | #define openblas_make_complex_double(real, imag) {(real), (imag)} 107 | #define openblas_make_complex_xdouble(real, imag) {(real), (imag)} 108 | #define openblas_complex_float_real(z) ((z).real) 109 | #define openblas_complex_float_imag(z) ((z).imag) 110 | #define openblas_complex_double_real(z) ((z).real) 111 | #define openblas_complex_double_imag(z) ((z).imag) 112 | #define openblas_complex_xdouble_real(z) ((z).real) 113 | #define openblas_complex_xdouble_imag(z) ((z).imag) 114 | #endif 115 | #endif /* OPENBLAS_CONFIG_H */ 116 | -------------------------------------------------------------------------------- /output/armv7a/libopenblas.a: -------------------------------------------------------------------------------- 1 | libopenblas_armv7-r0.2.20.dev.a -------------------------------------------------------------------------------- /output/armv7a/libopenblas_armv7-r0.2.20.dev.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quickwritereader/openblasBuildForAndroid/f3c63ea37276d079ccbf33f44e8e36474756c57b/output/armv7a/libopenblas_armv7-r0.2.20.dev.a -------------------------------------------------------------------------------- /output/armv7ainclude/lapacke_config.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | Copyright (c) 2010, Intel Corp. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | * Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | * Neither the name of Intel Corporation nor the names of its contributors 14 | may be used to endorse or promote products derived from this software 15 | without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 27 | THE POSSIBILITY OF SUCH DAMAGE. 28 | ****************************************************************************** 29 | * Contents: Native C interface to LAPACK 30 | * Author: Intel Corporation 31 | * Generated May, 2011 32 | *****************************************************************************/ 33 | 34 | #ifndef _LAPACKE_CONFIG_H_ 35 | #define _LAPACKE_CONFIG_H_ 36 | 37 | // For Android prior to API 21 (no include) 38 | #if defined(__ANDROID__) 39 | #if __ANDROID_API__ < 21 40 | #define LAPACK_COMPLEX_STRUCTURE 41 | #endif 42 | #endif 43 | 44 | #ifdef __cplusplus 45 | #if defined(LAPACK_COMPLEX_CPP) 46 | #include 47 | #endif 48 | extern "C" { 49 | #endif /* __cplusplus */ 50 | 51 | #include 52 | 53 | #ifndef lapack_int 54 | #if defined(LAPACK_ILP64) 55 | #define lapack_int long 56 | #else 57 | #define lapack_int int 58 | #endif 59 | #endif 60 | 61 | #ifndef lapack_logical 62 | #define lapack_logical lapack_int 63 | #endif 64 | 65 | #ifndef LAPACK_COMPLEX_CUSTOM 66 | 67 | #if defined(LAPACK_COMPLEX_STRUCTURE) 68 | 69 | typedef struct { float real, imag; } _lapack_complex_float; 70 | typedef struct { double real, imag; } _lapack_complex_double; 71 | #define lapack_complex_float _lapack_complex_float 72 | #define lapack_complex_double _lapack_complex_double 73 | #define lapack_complex_float_real(z) ((z).real) 74 | #define lapack_complex_float_imag(z) ((z).imag) 75 | #define lapack_complex_double_real(z) ((z).real) 76 | #define lapack_complex_double_imag(z) ((z).imag) 77 | 78 | #elif defined(LAPACK_COMPLEX_C99) 79 | 80 | #include 81 | #define lapack_complex_float float _Complex 82 | #define lapack_complex_double double _Complex 83 | #define lapack_complex_float_real(z) (creal(z)) 84 | #define lapack_complex_float_imag(z) (cimag(z)) 85 | #define lapack_complex_double_real(z) (creal(z)) 86 | #define lapack_complex_double_imag(z) (cimag(z)) 87 | 88 | #elif defined(LAPACK_COMPLEX_CPP) 89 | 90 | #define lapack_complex_float std::complex 91 | #define lapack_complex_double std::complex 92 | #define lapack_complex_float_real(z) ((z).real()) 93 | #define lapack_complex_float_imag(z) ((z).imag()) 94 | #define lapack_complex_double_real(z) ((z).real()) 95 | #define lapack_complex_double_imag(z) ((z).imag()) 96 | 97 | #else 98 | 99 | #include 100 | #define lapack_complex_float float _Complex 101 | #define lapack_complex_double double _Complex 102 | #define lapack_complex_float_real(z) (creal(z)) 103 | #define lapack_complex_float_imag(z) (cimag(z)) 104 | #define lapack_complex_double_real(z) (creal(z)) 105 | #define lapack_complex_double_imag(z) (cimag(z)) 106 | 107 | #endif 108 | 109 | lapack_complex_float lapack_make_complex_float( float re, float im ); 110 | lapack_complex_double lapack_make_complex_double( double re, double im ); 111 | 112 | #endif 113 | 114 | #ifndef LAPACK_malloc 115 | #define LAPACK_malloc( size ) malloc( size ) 116 | #endif 117 | 118 | #ifndef LAPACK_free 119 | #define LAPACK_free( p ) free( p ) 120 | #endif 121 | 122 | #ifdef __cplusplus 123 | } 124 | #endif /* __cplusplus */ 125 | 126 | #endif /* _LAPACKE_CONFIG_H_ */ 127 | -------------------------------------------------------------------------------- /output/armv7ainclude/lapacke_mangling.h: -------------------------------------------------------------------------------- 1 | #ifndef LAPACK_HEADER_INCLUDED 2 | #define LAPACK_HEADER_INCLUDED 3 | 4 | #ifndef LAPACK_GLOBAL 5 | #if defined(LAPACK_GLOBAL_PATTERN_LC) || defined(ADD_) 6 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname##_ 7 | #elif defined(LAPACK_GLOBAL_PATTERN_UC) || defined(UPPER) 8 | #define LAPACK_GLOBAL(lcname,UCNAME) UCNAME 9 | #elif defined(LAPACK_GLOBAL_PATTERN_MC) || defined(NOCHANGE) 10 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname 11 | #else 12 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname##_ 13 | #endif 14 | #endif 15 | 16 | #endif 17 | 18 | -------------------------------------------------------------------------------- /output/armv7ainclude/lapacke_utils.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | Copyright (c) 2014, Intel Corp. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | * Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | * Neither the name of Intel Corporation nor the names of its contributors 14 | may be used to endorse or promote products derived from this software 15 | without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 27 | THE POSSIBILITY OF SUCH DAMAGE. 28 | ****************************************************************************** 29 | * Contents: Native C interface to LAPACK utility functions 30 | * Author: Intel Corporation 31 | * Created in January, 2010 32 | *****************************************************************************/ 33 | 34 | #ifndef _LAPACKE_UTILS_H_ 35 | #define _LAPACKE_UTILS_H_ 36 | 37 | #include "lapacke.h" 38 | 39 | #ifdef __cplusplus 40 | extern "C" { 41 | #endif /* __cplusplus */ 42 | 43 | #ifndef ABS 44 | #define ABS(x) (((x) < 0) ? -(x) : (x)) 45 | #endif 46 | #ifndef MAX 47 | #define MAX(x,y) (((x) > (y)) ? (x) : (y)) 48 | #endif 49 | #ifndef MIN 50 | #define MIN(x,y) (((x) < (y)) ? (x) : (y)) 51 | #endif 52 | #ifndef MAX3 53 | #define MAX3(x,y,z) (((x) > MAX(y,z)) ? (x) : MAX(y,z)) 54 | #endif 55 | #ifndef MIN3 56 | #define MIN3(x,y,z) (((x) < MIN(y,z)) ? (x) : MIN(y,z)) 57 | #endif 58 | 59 | #define IS_S_NONZERO(x) ( (x) < 0 || (x) > 0 ) 60 | #define IS_D_NONZERO(x) ( (x) < 0 || (x) > 0 ) 61 | #define IS_C_NONZERO(x) ( IS_S_NONZERO(*((float*)&x)) || \ 62 | IS_S_NONZERO(*(((float*)&x)+1)) ) 63 | #define IS_Z_NONZERO(x) ( IS_D_NONZERO(*((double*)&x)) || \ 64 | IS_D_NONZERO(*(((double*)&x)+1)) ) 65 | 66 | /* Error handler */ 67 | void LAPACKE_xerbla( const char *name, lapack_int info ); 68 | 69 | /* Compare two chars (case-insensitive) */ 70 | lapack_logical LAPACKE_lsame( char ca, char cb ); 71 | 72 | /* Functions to convert column-major to row-major 2d arrays and vice versa. */ 73 | void LAPACKE_cgb_trans( int matrix_layout, lapack_int m, lapack_int n, 74 | lapack_int kl, lapack_int ku, 75 | const lapack_complex_float *in, lapack_int ldin, 76 | lapack_complex_float *out, lapack_int ldout ); 77 | void LAPACKE_cge_trans( int matrix_layout, lapack_int m, lapack_int n, 78 | const lapack_complex_float* in, lapack_int ldin, 79 | lapack_complex_float* out, lapack_int ldout ); 80 | void LAPACKE_cgg_trans( int matrix_layout, lapack_int m, lapack_int n, 81 | const lapack_complex_float* in, lapack_int ldin, 82 | lapack_complex_float* out, lapack_int ldout ); 83 | void LAPACKE_chb_trans( int matrix_layout, char uplo, lapack_int n, 84 | lapack_int kd, 85 | const lapack_complex_float *in, lapack_int ldin, 86 | lapack_complex_float *out, lapack_int ldout ); 87 | void LAPACKE_che_trans( int matrix_layout, char uplo, lapack_int n, 88 | const lapack_complex_float *in, lapack_int ldin, 89 | lapack_complex_float *out, lapack_int ldout ); 90 | void LAPACKE_chp_trans( int matrix_layout, char uplo, lapack_int n, 91 | const lapack_complex_float *in, 92 | lapack_complex_float *out ); 93 | void LAPACKE_chs_trans( int matrix_layout, lapack_int n, 94 | const lapack_complex_float *in, lapack_int ldin, 95 | lapack_complex_float *out, lapack_int ldout ); 96 | void LAPACKE_cpb_trans( int matrix_layout, char uplo, lapack_int n, 97 | lapack_int kd, 98 | const lapack_complex_float *in, lapack_int ldin, 99 | lapack_complex_float *out, lapack_int ldout ); 100 | void LAPACKE_cpf_trans( int matrix_layout, char transr, char uplo, 101 | lapack_int n, const lapack_complex_float *in, 102 | lapack_complex_float *out ); 103 | void LAPACKE_cpo_trans( int matrix_layout, char uplo, lapack_int n, 104 | const lapack_complex_float *in, lapack_int ldin, 105 | lapack_complex_float *out, lapack_int ldout ); 106 | void LAPACKE_cpp_trans( int matrix_layout, char uplo, lapack_int n, 107 | const lapack_complex_float *in, 108 | lapack_complex_float *out ); 109 | void LAPACKE_csp_trans( int matrix_layout, char uplo, lapack_int n, 110 | const lapack_complex_float *in, 111 | lapack_complex_float *out ); 112 | void LAPACKE_csy_trans( int matrix_layout, char uplo, lapack_int n, 113 | const lapack_complex_float *in, lapack_int ldin, 114 | lapack_complex_float *out, lapack_int ldout ); 115 | void LAPACKE_ctb_trans( int matrix_layout, char uplo, char diag, 116 | lapack_int n, lapack_int kd, 117 | const lapack_complex_float *in, lapack_int ldin, 118 | lapack_complex_float *out, lapack_int ldout ); 119 | void LAPACKE_ctf_trans( int matrix_layout, char transr, char uplo, char diag, 120 | lapack_int n, const lapack_complex_float *in, 121 | lapack_complex_float *out ); 122 | void LAPACKE_ctp_trans( int matrix_layout, char uplo, char diag, 123 | lapack_int n, const lapack_complex_float *in, 124 | lapack_complex_float *out ); 125 | void LAPACKE_ctr_trans( int matrix_layout, char uplo, char diag, lapack_int n, 126 | const lapack_complex_float *in, lapack_int ldin, 127 | lapack_complex_float *out, lapack_int ldout ); 128 | 129 | void LAPACKE_dgb_trans( int matrix_layout, lapack_int m, lapack_int n, 130 | lapack_int kl, lapack_int ku, 131 | const double *in, lapack_int ldin, 132 | double *out, lapack_int ldout ); 133 | void LAPACKE_dge_trans( int matrix_layout, lapack_int m, lapack_int n, 134 | const double* in, lapack_int ldin, 135 | double* out, lapack_int ldout ); 136 | void LAPACKE_dgg_trans( int matrix_layout, lapack_int m, lapack_int n, 137 | const double* in, lapack_int ldin, 138 | double* out, lapack_int ldout ); 139 | void LAPACKE_dhs_trans( int matrix_layout, lapack_int n, 140 | const double *in, lapack_int ldin, 141 | double *out, lapack_int ldout ); 142 | void LAPACKE_dpb_trans( int matrix_layout, char uplo, lapack_int n, 143 | lapack_int kd, 144 | const double *in, lapack_int ldin, 145 | double *out, lapack_int ldout ); 146 | void LAPACKE_dpf_trans( int matrix_layout, char transr, char uplo, 147 | lapack_int n, const double *in, 148 | double *out ); 149 | void LAPACKE_dpo_trans( int matrix_layout, char uplo, lapack_int n, 150 | const double *in, lapack_int ldin, 151 | double *out, lapack_int ldout ); 152 | void LAPACKE_dpp_trans( int matrix_layout, char uplo, lapack_int n, 153 | const double *in, 154 | double *out ); 155 | void LAPACKE_dsb_trans( int matrix_layout, char uplo, lapack_int n, 156 | lapack_int kd, 157 | const double *in, lapack_int ldin, 158 | double *out, lapack_int ldout ); 159 | void LAPACKE_dsp_trans( int matrix_layout, char uplo, lapack_int n, 160 | const double *in, 161 | double *out ); 162 | void LAPACKE_dsy_trans( int matrix_layout, char uplo, lapack_int n, 163 | const double *in, lapack_int ldin, 164 | double *out, lapack_int ldout ); 165 | void LAPACKE_dtb_trans( int matrix_layout, char uplo, char diag, 166 | lapack_int n, lapack_int kd, 167 | const double *in, lapack_int ldin, 168 | double *out, lapack_int ldout ); 169 | void LAPACKE_dtf_trans( int matrix_layout, char transr, char uplo, char diag, 170 | lapack_int n, const double *in, 171 | double *out ); 172 | void LAPACKE_dtp_trans( int matrix_layout, char uplo, char diag, 173 | lapack_int n, const double *in, 174 | double *out ); 175 | void LAPACKE_dtr_trans( int matrix_layout, char uplo, char diag, lapack_int n, 176 | const double *in, lapack_int ldin, 177 | double *out, lapack_int ldout ); 178 | 179 | void LAPACKE_sgb_trans( int matrix_layout, lapack_int m, lapack_int n, 180 | lapack_int kl, lapack_int ku, 181 | const float *in, lapack_int ldin, 182 | float *out, lapack_int ldout ); 183 | void LAPACKE_sge_trans( int matrix_layout, lapack_int m, lapack_int n, 184 | const float* in, lapack_int ldin, 185 | float* out, lapack_int ldout ); 186 | void LAPACKE_sgg_trans( int matrix_layout, lapack_int m, lapack_int n, 187 | const float* in, lapack_int ldin, 188 | float* out, lapack_int ldout ); 189 | void LAPACKE_shs_trans( int matrix_layout, lapack_int n, 190 | const float *in, lapack_int ldin, 191 | float *out, lapack_int ldout ); 192 | void LAPACKE_spb_trans( int matrix_layout, char uplo, lapack_int n, 193 | lapack_int kd, 194 | const float *in, lapack_int ldin, 195 | float *out, lapack_int ldout ); 196 | void LAPACKE_spf_trans( int matrix_layout, char transr, char uplo, 197 | lapack_int n, const float *in, 198 | float *out ); 199 | void LAPACKE_spo_trans( int matrix_layout, char uplo, lapack_int n, 200 | const float *in, lapack_int ldin, 201 | float *out, lapack_int ldout ); 202 | void LAPACKE_spp_trans( int matrix_layout, char uplo, lapack_int n, 203 | const float *in, 204 | float *out ); 205 | void LAPACKE_ssb_trans( int matrix_layout, char uplo, lapack_int n, 206 | lapack_int kd, 207 | const float *in, lapack_int ldin, 208 | float *out, lapack_int ldout ); 209 | void LAPACKE_ssp_trans( int matrix_layout, char uplo, lapack_int n, 210 | const float *in, 211 | float *out ); 212 | void LAPACKE_ssy_trans( int matrix_layout, char uplo, lapack_int n, 213 | const float *in, lapack_int ldin, 214 | float *out, lapack_int ldout ); 215 | void LAPACKE_stb_trans( int matrix_layout, char uplo, char diag, 216 | lapack_int n, lapack_int kd, 217 | const float *in, lapack_int ldin, 218 | float *out, lapack_int ldout ); 219 | void LAPACKE_stf_trans( int matrix_layout, char transr, char uplo, char diag, 220 | lapack_int n, const float *in, 221 | float *out ); 222 | void LAPACKE_stp_trans( int matrix_layout, char uplo, char diag, 223 | lapack_int n, const float *in, 224 | float *out ); 225 | void LAPACKE_str_trans( int matrix_layout, char uplo, char diag, lapack_int n, 226 | const float *in, lapack_int ldin, 227 | float *out, lapack_int ldout ); 228 | 229 | void LAPACKE_zgb_trans( int matrix_layout, lapack_int m, lapack_int n, 230 | lapack_int kl, lapack_int ku, 231 | const lapack_complex_double *in, lapack_int ldin, 232 | lapack_complex_double *out, lapack_int ldout ); 233 | void LAPACKE_zge_trans( int matrix_layout, lapack_int m, lapack_int n, 234 | const lapack_complex_double* in, lapack_int ldin, 235 | lapack_complex_double* out, lapack_int ldout ); 236 | void LAPACKE_zgg_trans( int matrix_layout, lapack_int m, lapack_int n, 237 | const lapack_complex_double* in, lapack_int ldin, 238 | lapack_complex_double* out, lapack_int ldout ); 239 | void LAPACKE_zhb_trans( int matrix_layout, char uplo, lapack_int n, 240 | lapack_int kd, 241 | const lapack_complex_double *in, lapack_int ldin, 242 | lapack_complex_double *out, lapack_int ldout ); 243 | void LAPACKE_zhe_trans( int matrix_layout, char uplo, lapack_int n, 244 | const lapack_complex_double *in, lapack_int ldin, 245 | lapack_complex_double *out, lapack_int ldout ); 246 | void LAPACKE_zhp_trans( int matrix_layout, char uplo, lapack_int n, 247 | const lapack_complex_double *in, 248 | lapack_complex_double *out ); 249 | void LAPACKE_zhs_trans( int matrix_layout, lapack_int n, 250 | const lapack_complex_double *in, lapack_int ldin, 251 | lapack_complex_double *out, lapack_int ldout ); 252 | void LAPACKE_zpb_trans( int matrix_layout, char uplo, lapack_int n, 253 | lapack_int kd, 254 | const lapack_complex_double *in, lapack_int ldin, 255 | lapack_complex_double *out, lapack_int ldout ); 256 | void LAPACKE_zpf_trans( int matrix_layout, char transr, char uplo, 257 | lapack_int n, const lapack_complex_double *in, 258 | lapack_complex_double *out ); 259 | void LAPACKE_zpo_trans( int matrix_layout, char uplo, lapack_int n, 260 | const lapack_complex_double *in, lapack_int ldin, 261 | lapack_complex_double *out, lapack_int ldout ); 262 | void LAPACKE_zpp_trans( int matrix_layout, char uplo, lapack_int n, 263 | const lapack_complex_double *in, 264 | lapack_complex_double *out ); 265 | void LAPACKE_zsp_trans( int matrix_layout, char uplo, lapack_int n, 266 | const lapack_complex_double *in, 267 | lapack_complex_double *out ); 268 | void LAPACKE_zsy_trans( int matrix_layout, char uplo, lapack_int n, 269 | const lapack_complex_double *in, lapack_int ldin, 270 | lapack_complex_double *out, lapack_int ldout ); 271 | void LAPACKE_ztb_trans( int matrix_layout, char uplo, char diag, 272 | lapack_int n, lapack_int kd, 273 | const lapack_complex_double *in, lapack_int ldin, 274 | lapack_complex_double *out, lapack_int ldout ); 275 | void LAPACKE_ztf_trans( int matrix_layout, char transr, char uplo, char diag, 276 | lapack_int n, const lapack_complex_double *in, 277 | lapack_complex_double *out ); 278 | void LAPACKE_ztp_trans( int matrix_layout, char uplo, char diag, 279 | lapack_int n, const lapack_complex_double *in, 280 | lapack_complex_double *out ); 281 | void LAPACKE_ztr_trans( int matrix_layout, char uplo, char diag, lapack_int n, 282 | const lapack_complex_double *in, lapack_int ldin, 283 | lapack_complex_double *out, lapack_int ldout ); 284 | 285 | /* NaN checkers */ 286 | #define LAPACK_SISNAN( x ) ( x != x ) 287 | #define LAPACK_DISNAN( x ) ( x != x ) 288 | #define LAPACK_CISNAN( x ) ( LAPACK_SISNAN(*((float*) &x)) || \ 289 | LAPACK_SISNAN(*(((float*) &x)+1)) ) 290 | #define LAPACK_ZISNAN( x ) ( LAPACK_DISNAN(*((double*)&x)) || \ 291 | LAPACK_DISNAN(*(((double*)&x)+1)) ) 292 | 293 | /* NaN checkers for vectors */ 294 | lapack_logical LAPACKE_c_nancheck( lapack_int n, 295 | const lapack_complex_float *x, 296 | lapack_int incx ); 297 | lapack_logical LAPACKE_d_nancheck( lapack_int n, 298 | const double *x, 299 | lapack_int incx ); 300 | lapack_logical LAPACKE_s_nancheck( lapack_int n, 301 | const float *x, 302 | lapack_int incx ); 303 | lapack_logical LAPACKE_z_nancheck( lapack_int n, 304 | const lapack_complex_double *x, 305 | lapack_int incx ); 306 | /* NaN checkers for matrices */ 307 | lapack_logical LAPACKE_cgb_nancheck( int matrix_layout, lapack_int m, 308 | lapack_int n, lapack_int kl, 309 | lapack_int ku, 310 | const lapack_complex_float *ab, 311 | lapack_int ldab ); 312 | lapack_logical LAPACKE_cge_nancheck( int matrix_layout, lapack_int m, 313 | lapack_int n, 314 | const lapack_complex_float *a, 315 | lapack_int lda ); 316 | lapack_logical LAPACKE_cgg_nancheck( int matrix_layout, lapack_int m, 317 | lapack_int n, 318 | const lapack_complex_float *a, 319 | lapack_int lda ); 320 | lapack_logical LAPACKE_cgt_nancheck( lapack_int n, 321 | const lapack_complex_float *dl, 322 | const lapack_complex_float *d, 323 | const lapack_complex_float *du ); 324 | lapack_logical LAPACKE_chb_nancheck( int matrix_layout, char uplo, 325 | lapack_int n, lapack_int kd, 326 | const lapack_complex_float* ab, 327 | lapack_int ldab ); 328 | lapack_logical LAPACKE_che_nancheck( int matrix_layout, char uplo, 329 | lapack_int n, 330 | const lapack_complex_float *a, 331 | lapack_int lda ); 332 | lapack_logical LAPACKE_chp_nancheck( lapack_int n, 333 | const lapack_complex_float *ap ); 334 | lapack_logical LAPACKE_chs_nancheck( int matrix_layout, lapack_int n, 335 | const lapack_complex_float *a, 336 | lapack_int lda ); 337 | lapack_logical LAPACKE_cpb_nancheck( int matrix_layout, char uplo, 338 | lapack_int n, lapack_int kd, 339 | const lapack_complex_float* ab, 340 | lapack_int ldab ); 341 | lapack_logical LAPACKE_cpf_nancheck( lapack_int n, 342 | const lapack_complex_float *a ); 343 | lapack_logical LAPACKE_cpo_nancheck( int matrix_layout, char uplo, 344 | lapack_int n, 345 | const lapack_complex_float *a, 346 | lapack_int lda ); 347 | lapack_logical LAPACKE_cpp_nancheck( lapack_int n, 348 | const lapack_complex_float *ap ); 349 | lapack_logical LAPACKE_cpt_nancheck( lapack_int n, 350 | const float *d, 351 | const lapack_complex_float *e ); 352 | lapack_logical LAPACKE_csp_nancheck( lapack_int n, 353 | const lapack_complex_float *ap ); 354 | lapack_logical LAPACKE_cst_nancheck( lapack_int n, 355 | const lapack_complex_float *d, 356 | const lapack_complex_float *e ); 357 | lapack_logical LAPACKE_csy_nancheck( int matrix_layout, char uplo, 358 | lapack_int n, 359 | const lapack_complex_float *a, 360 | lapack_int lda ); 361 | lapack_logical LAPACKE_ctb_nancheck( int matrix_layout, char uplo, char diag, 362 | lapack_int n, lapack_int kd, 363 | const lapack_complex_float* ab, 364 | lapack_int ldab ); 365 | lapack_logical LAPACKE_ctf_nancheck( int matrix_layout, char transr, 366 | char uplo, char diag, 367 | lapack_int n, 368 | const lapack_complex_float *a ); 369 | lapack_logical LAPACKE_ctp_nancheck( int matrix_layout, char uplo, char diag, 370 | lapack_int n, 371 | const lapack_complex_float *ap ); 372 | lapack_logical LAPACKE_ctr_nancheck( int matrix_layout, char uplo, char diag, 373 | lapack_int n, 374 | const lapack_complex_float *a, 375 | lapack_int lda ); 376 | 377 | lapack_logical LAPACKE_dgb_nancheck( int matrix_layout, lapack_int m, 378 | lapack_int n, lapack_int kl, 379 | lapack_int ku, 380 | const double *ab, 381 | lapack_int ldab ); 382 | lapack_logical LAPACKE_dge_nancheck( int matrix_layout, lapack_int m, 383 | lapack_int n, 384 | const double *a, 385 | lapack_int lda ); 386 | lapack_logical LAPACKE_dgg_nancheck( int matrix_layout, lapack_int m, 387 | lapack_int n, 388 | const double *a, 389 | lapack_int lda ); 390 | lapack_logical LAPACKE_dgt_nancheck( lapack_int n, 391 | const double *dl, 392 | const double *d, 393 | const double *du ); 394 | lapack_logical LAPACKE_dhs_nancheck( int matrix_layout, lapack_int n, 395 | const double *a, 396 | lapack_int lda ); 397 | lapack_logical LAPACKE_dpb_nancheck( int matrix_layout, char uplo, 398 | lapack_int n, lapack_int kd, 399 | const double* ab, 400 | lapack_int ldab ); 401 | lapack_logical LAPACKE_dpf_nancheck( lapack_int n, 402 | const double *a ); 403 | lapack_logical LAPACKE_dpo_nancheck( int matrix_layout, char uplo, 404 | lapack_int n, 405 | const double *a, 406 | lapack_int lda ); 407 | lapack_logical LAPACKE_dpp_nancheck( lapack_int n, 408 | const double *ap ); 409 | lapack_logical LAPACKE_dpt_nancheck( lapack_int n, 410 | const double *d, 411 | const double *e ); 412 | lapack_logical LAPACKE_dsb_nancheck( int matrix_layout, char uplo, 413 | lapack_int n, lapack_int kd, 414 | const double* ab, 415 | lapack_int ldab ); 416 | lapack_logical LAPACKE_dsp_nancheck( lapack_int n, 417 | const double *ap ); 418 | lapack_logical LAPACKE_dst_nancheck( lapack_int n, 419 | const double *d, 420 | const double *e ); 421 | lapack_logical LAPACKE_dsy_nancheck( int matrix_layout, char uplo, 422 | lapack_int n, 423 | const double *a, 424 | lapack_int lda ); 425 | lapack_logical LAPACKE_dtb_nancheck( int matrix_layout, char uplo, char diag, 426 | lapack_int n, lapack_int kd, 427 | const double* ab, 428 | lapack_int ldab ); 429 | lapack_logical LAPACKE_dtf_nancheck( int matrix_layout, char transr, 430 | char uplo, char diag, 431 | lapack_int n, 432 | const double *a ); 433 | lapack_logical LAPACKE_dtp_nancheck( int matrix_layout, char uplo, char diag, 434 | lapack_int n, 435 | const double *ap ); 436 | lapack_logical LAPACKE_dtr_nancheck( int matrix_layout, char uplo, char diag, 437 | lapack_int n, 438 | const double *a, 439 | lapack_int lda ); 440 | 441 | lapack_logical LAPACKE_sgb_nancheck( int matrix_layout, lapack_int m, 442 | lapack_int n, lapack_int kl, 443 | lapack_int ku, 444 | const float *ab, 445 | lapack_int ldab ); 446 | lapack_logical LAPACKE_sge_nancheck( int matrix_layout, lapack_int m, 447 | lapack_int n, 448 | const float *a, 449 | lapack_int lda ); 450 | lapack_logical LAPACKE_sgg_nancheck( int matrix_layout, lapack_int m, 451 | lapack_int n, 452 | const float *a, 453 | lapack_int lda ); 454 | lapack_logical LAPACKE_sgt_nancheck( lapack_int n, 455 | const float *dl, 456 | const float *d, 457 | const float *du ); 458 | lapack_logical LAPACKE_shs_nancheck( int matrix_layout, lapack_int n, 459 | const float *a, 460 | lapack_int lda ); 461 | lapack_logical LAPACKE_spb_nancheck( int matrix_layout, char uplo, 462 | lapack_int n, lapack_int kd, 463 | const float* ab, 464 | lapack_int ldab ); 465 | lapack_logical LAPACKE_spf_nancheck( lapack_int n, 466 | const float *a ); 467 | lapack_logical LAPACKE_spo_nancheck( int matrix_layout, char uplo, 468 | lapack_int n, 469 | const float *a, 470 | lapack_int lda ); 471 | lapack_logical LAPACKE_spp_nancheck( lapack_int n, 472 | const float *ap ); 473 | lapack_logical LAPACKE_spt_nancheck( lapack_int n, 474 | const float *d, 475 | const float *e ); 476 | lapack_logical LAPACKE_ssb_nancheck( int matrix_layout, char uplo, 477 | lapack_int n, lapack_int kd, 478 | const float* ab, 479 | lapack_int ldab ); 480 | lapack_logical LAPACKE_ssp_nancheck( lapack_int n, 481 | const float *ap ); 482 | lapack_logical LAPACKE_sst_nancheck( lapack_int n, 483 | const float *d, 484 | const float *e ); 485 | lapack_logical LAPACKE_ssy_nancheck( int matrix_layout, char uplo, 486 | lapack_int n, 487 | const float *a, 488 | lapack_int lda ); 489 | lapack_logical LAPACKE_stb_nancheck( int matrix_layout, char uplo, char diag, 490 | lapack_int n, lapack_int kd, 491 | const float* ab, 492 | lapack_int ldab ); 493 | lapack_logical LAPACKE_stf_nancheck( int matrix_layout, char transr, 494 | char uplo, char diag, 495 | lapack_int n, 496 | const float *a ); 497 | lapack_logical LAPACKE_stp_nancheck( int matrix_layout, char uplo, char diag, 498 | lapack_int n, 499 | const float *ap ); 500 | lapack_logical LAPACKE_str_nancheck( int matrix_layout, char uplo, char diag, 501 | lapack_int n, 502 | const float *a, 503 | lapack_int lda ); 504 | 505 | lapack_logical LAPACKE_zgb_nancheck( int matrix_layout, lapack_int m, 506 | lapack_int n, lapack_int kl, 507 | lapack_int ku, 508 | const lapack_complex_double *ab, 509 | lapack_int ldab ); 510 | lapack_logical LAPACKE_zge_nancheck( int matrix_layout, lapack_int m, 511 | lapack_int n, 512 | const lapack_complex_double *a, 513 | lapack_int lda ); 514 | lapack_logical LAPACKE_zgg_nancheck( int matrix_layout, lapack_int m, 515 | lapack_int n, 516 | const lapack_complex_double *a, 517 | lapack_int lda ); 518 | lapack_logical LAPACKE_zgt_nancheck( lapack_int n, 519 | const lapack_complex_double *dl, 520 | const lapack_complex_double *d, 521 | const lapack_complex_double *du ); 522 | lapack_logical LAPACKE_zhb_nancheck( int matrix_layout, char uplo, 523 | lapack_int n, lapack_int kd, 524 | const lapack_complex_double* ab, 525 | lapack_int ldab ); 526 | lapack_logical LAPACKE_zhe_nancheck( int matrix_layout, char uplo, 527 | lapack_int n, 528 | const lapack_complex_double *a, 529 | lapack_int lda ); 530 | lapack_logical LAPACKE_zhp_nancheck( lapack_int n, 531 | const lapack_complex_double *ap ); 532 | lapack_logical LAPACKE_zhs_nancheck( int matrix_layout, lapack_int n, 533 | const lapack_complex_double *a, 534 | lapack_int lda ); 535 | lapack_logical LAPACKE_zpb_nancheck( int matrix_layout, char uplo, 536 | lapack_int n, lapack_int kd, 537 | const lapack_complex_double* ab, 538 | lapack_int ldab ); 539 | lapack_logical LAPACKE_zpf_nancheck( lapack_int n, 540 | const lapack_complex_double *a ); 541 | lapack_logical LAPACKE_zpo_nancheck( int matrix_layout, char uplo, 542 | lapack_int n, 543 | const lapack_complex_double *a, 544 | lapack_int lda ); 545 | lapack_logical LAPACKE_zpp_nancheck( lapack_int n, 546 | const lapack_complex_double *ap ); 547 | lapack_logical LAPACKE_zpt_nancheck( lapack_int n, 548 | const double *d, 549 | const lapack_complex_double *e ); 550 | lapack_logical LAPACKE_zsp_nancheck( lapack_int n, 551 | const lapack_complex_double *ap ); 552 | lapack_logical LAPACKE_zst_nancheck( lapack_int n, 553 | const lapack_complex_double *d, 554 | const lapack_complex_double *e ); 555 | lapack_logical LAPACKE_zsy_nancheck( int matrix_layout, char uplo, 556 | lapack_int n, 557 | const lapack_complex_double *a, 558 | lapack_int lda ); 559 | lapack_logical LAPACKE_ztb_nancheck( int matrix_layout, char uplo, char diag, 560 | lapack_int n, lapack_int kd, 561 | const lapack_complex_double* ab, 562 | lapack_int ldab ); 563 | lapack_logical LAPACKE_ztf_nancheck( int matrix_layout, char transr, 564 | char uplo, char diag, 565 | lapack_int n, 566 | const lapack_complex_double *a ); 567 | lapack_logical LAPACKE_ztp_nancheck( int matrix_layout, char uplo, char diag, 568 | lapack_int n, 569 | const lapack_complex_double *ap ); 570 | lapack_logical LAPACKE_ztr_nancheck( int matrix_layout, char uplo, char diag, 571 | lapack_int n, 572 | const lapack_complex_double *a, 573 | lapack_int lda ); 574 | 575 | #ifdef __cplusplus 576 | } 577 | #endif /* __cplusplus */ 578 | 579 | #endif /* _LAPACKE_UTILS_H_ */ 580 | -------------------------------------------------------------------------------- /output/armv7ainclude/openblas_config.h: -------------------------------------------------------------------------------- 1 | #ifndef OPENBLAS_CONFIG_H 2 | #define OPENBLAS_CONFIG_H 3 | #define OPENBLAS_OS_ANDROID 1 4 | #define OPENBLAS_ARCH_ARM 1 5 | #define OPENBLAS_C_GCC 1 6 | #define OPENBLAS___32BIT__ 1 7 | #define OPENBLAS_PTHREAD_CREATE_FUNC pthread_create 8 | #define OPENBLAS_BUNDERSCORE _ 9 | #define OPENBLAS_NEEDBUNDERSCORE 1 10 | #define OPENBLAS_ARMV7 11 | #define OPENBLAS_L1_DATA_SIZE 65536 12 | #define OPENBLAS_L1_DATA_LINESIZE 32 13 | #define OPENBLAS_L2_SIZE 512488 14 | #define OPENBLAS_L2_LINESIZE 32 15 | #define OPENBLAS_DTB_DEFAULT_ENTRIES 64 16 | #define OPENBLAS_DTB_SIZE 4096 17 | #define OPENBLAS_L2_ASSOCIATIVE 4 18 | #define OPENBLAS_HAVE_VFPV3 19 | #define OPENBLAS_HAVE_VFP 20 | #define OPENBLAS_CORE_ARMV7 21 | #define OPENBLAS_CHAR_CORENAME "ARMV7" 22 | #define OPENBLAS_GEMM_MULTITHREAD_THRESHOLD 4 23 | #define OPENBLAS_VERSION " OpenBLAS 0.2.20.dev " 24 | /*This is only for "make install" target.*/ 25 | 26 | #if defined(OPENBLAS_OS_WINNT) || defined(OPENBLAS_OS_CYGWIN_NT) || defined(OPENBLAS_OS_INTERIX) 27 | #define OPENBLAS_WINDOWS_ABI 28 | #define OPENBLAS_OS_WINDOWS 29 | 30 | #ifdef DOUBLE 31 | #define DOUBLE_DEFINED DOUBLE 32 | #undef DOUBLE 33 | #endif 34 | #endif 35 | 36 | #ifdef OPENBLAS_NEEDBUNDERSCORE 37 | #define BLASFUNC(FUNC) FUNC##_ 38 | #else 39 | #define BLASFUNC(FUNC) FUNC 40 | #endif 41 | 42 | #ifdef OPENBLAS_QUAD_PRECISION 43 | typedef struct { 44 | unsigned long x[2]; 45 | } xdouble; 46 | #elif defined OPENBLAS_EXPRECISION 47 | #define xdouble long double 48 | #else 49 | #define xdouble double 50 | #endif 51 | 52 | #if defined(OPENBLAS_OS_WINDOWS) && defined(OPENBLAS___64BIT__) 53 | typedef long long BLASLONG; 54 | typedef unsigned long long BLASULONG; 55 | #else 56 | typedef long BLASLONG; 57 | typedef unsigned long BLASULONG; 58 | #endif 59 | 60 | #ifdef OPENBLAS_USE64BITINT 61 | typedef BLASLONG blasint; 62 | #else 63 | typedef int blasint; 64 | #endif 65 | 66 | #if defined(XDOUBLE) || defined(DOUBLE) 67 | #define FLOATRET FLOAT 68 | #else 69 | #ifdef NEED_F2CCONV 70 | #define FLOATRET double 71 | #else 72 | #define FLOATRET float 73 | #endif 74 | #endif 75 | 76 | /* Inclusion of a standard header file is needed for definition of __STDC_* 77 | predefined macros with some compilers (e.g. GCC 4.7 on Linux). This occurs 78 | as a side effect of including either or . */ 79 | #include 80 | 81 | /* C99 supports complex floating numbers natively, which GCC also offers as an 82 | extension since version 3.0. If neither are available, use a compatible 83 | structure as fallback (see Clause 6.2.5.13 of the C99 standard). */ 84 | #if ((defined(__STDC_IEC_559_COMPLEX__) || __STDC_VERSION__ >= 199901L || \ 85 | (__GNUC__ >= 3 && !defined(__cplusplus))) && !(defined(FORCE_OPENBLAS_COMPLEX_STRUCT))) 86 | #define OPENBLAS_COMPLEX_C99 87 | #ifndef __cplusplus 88 | #include 89 | #endif 90 | typedef float _Complex openblas_complex_float; 91 | typedef double _Complex openblas_complex_double; 92 | typedef xdouble _Complex openblas_complex_xdouble; 93 | #define openblas_make_complex_float(real, imag) ((real) + ((imag) * _Complex_I)) 94 | #define openblas_make_complex_double(real, imag) ((real) + ((imag) * _Complex_I)) 95 | #define openblas_make_complex_xdouble(real, imag) ((real) + ((imag) * _Complex_I)) 96 | #define openblas_complex_float_real(z) (creal(z)) 97 | #define openblas_complex_float_imag(z) (cimag(z)) 98 | #define openblas_complex_double_real(z) (creal(z)) 99 | #define openblas_complex_double_imag(z) (cimag(z)) 100 | #define openblas_complex_xdouble_real(z) (creal(z)) 101 | #define openblas_complex_xdouble_imag(z) (cimag(z)) 102 | #else 103 | #define OPENBLAS_COMPLEX_STRUCT 104 | typedef struct { float real, imag; } openblas_complex_float; 105 | typedef struct { double real, imag; } openblas_complex_double; 106 | typedef struct { xdouble real, imag; } openblas_complex_xdouble; 107 | #define openblas_make_complex_float(real, imag) {(real), (imag)} 108 | #define openblas_make_complex_double(real, imag) {(real), (imag)} 109 | #define openblas_make_complex_xdouble(real, imag) {(real), (imag)} 110 | #define openblas_complex_float_real(z) ((z).real) 111 | #define openblas_complex_float_imag(z) ((z).imag) 112 | #define openblas_complex_double_real(z) ((z).real) 113 | #define openblas_complex_double_imag(z) ((z).imag) 114 | #define openblas_complex_xdouble_real(z) ((z).real) 115 | #define openblas_complex_xdouble_imag(z) ((z).imag) 116 | #endif 117 | #endif /* OPENBLAS_CONFIG_H */ 118 | -------------------------------------------------------------------------------- /output/mips/libopenblas.a: -------------------------------------------------------------------------------- 1 | libopenblas_p5600-r0.2.20.dev.a -------------------------------------------------------------------------------- /output/mips/libopenblas_p5600-r0.2.20.dev.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quickwritereader/openblasBuildForAndroid/f3c63ea37276d079ccbf33f44e8e36474756c57b/output/mips/libopenblas_p5600-r0.2.20.dev.a -------------------------------------------------------------------------------- /output/mips64/libopenblas.a: -------------------------------------------------------------------------------- 1 | libopenblas_mips-r0.2.20.dev.a -------------------------------------------------------------------------------- /output/mips64/libopenblas_mips-r0.2.20.dev.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quickwritereader/openblasBuildForAndroid/f3c63ea37276d079ccbf33f44e8e36474756c57b/output/mips64/libopenblas_mips-r0.2.20.dev.a -------------------------------------------------------------------------------- /output/mips64include/lapacke_config.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | Copyright (c) 2010, Intel Corp. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | * Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | * Neither the name of Intel Corporation nor the names of its contributors 14 | may be used to endorse or promote products derived from this software 15 | without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 27 | THE POSSIBILITY OF SUCH DAMAGE. 28 | ****************************************************************************** 29 | * Contents: Native C interface to LAPACK 30 | * Author: Intel Corporation 31 | * Generated May, 2011 32 | *****************************************************************************/ 33 | 34 | #ifndef _LAPACKE_CONFIG_H_ 35 | #define _LAPACKE_CONFIG_H_ 36 | 37 | // For Android prior to API 21 (no include) 38 | #if defined(__ANDROID__) 39 | #if __ANDROID_API__ < 21 40 | #define LAPACK_COMPLEX_STRUCTURE 41 | #endif 42 | #endif 43 | 44 | #ifdef __cplusplus 45 | #if defined(LAPACK_COMPLEX_CPP) 46 | #include 47 | #endif 48 | extern "C" { 49 | #endif /* __cplusplus */ 50 | 51 | #include 52 | 53 | #ifndef lapack_int 54 | #if defined(LAPACK_ILP64) 55 | #define lapack_int long 56 | #else 57 | #define lapack_int int 58 | #endif 59 | #endif 60 | 61 | #ifndef lapack_logical 62 | #define lapack_logical lapack_int 63 | #endif 64 | 65 | #ifndef LAPACK_COMPLEX_CUSTOM 66 | 67 | #if defined(LAPACK_COMPLEX_STRUCTURE) 68 | 69 | typedef struct { float real, imag; } _lapack_complex_float; 70 | typedef struct { double real, imag; } _lapack_complex_double; 71 | #define lapack_complex_float _lapack_complex_float 72 | #define lapack_complex_double _lapack_complex_double 73 | #define lapack_complex_float_real(z) ((z).real) 74 | #define lapack_complex_float_imag(z) ((z).imag) 75 | #define lapack_complex_double_real(z) ((z).real) 76 | #define lapack_complex_double_imag(z) ((z).imag) 77 | 78 | #elif defined(LAPACK_COMPLEX_C99) 79 | 80 | #include 81 | #define lapack_complex_float float _Complex 82 | #define lapack_complex_double double _Complex 83 | #define lapack_complex_float_real(z) (creal(z)) 84 | #define lapack_complex_float_imag(z) (cimag(z)) 85 | #define lapack_complex_double_real(z) (creal(z)) 86 | #define lapack_complex_double_imag(z) (cimag(z)) 87 | 88 | #elif defined(LAPACK_COMPLEX_CPP) 89 | 90 | #define lapack_complex_float std::complex 91 | #define lapack_complex_double std::complex 92 | #define lapack_complex_float_real(z) ((z).real()) 93 | #define lapack_complex_float_imag(z) ((z).imag()) 94 | #define lapack_complex_double_real(z) ((z).real()) 95 | #define lapack_complex_double_imag(z) ((z).imag()) 96 | 97 | #else 98 | 99 | #include 100 | #define lapack_complex_float float _Complex 101 | #define lapack_complex_double double _Complex 102 | #define lapack_complex_float_real(z) (creal(z)) 103 | #define lapack_complex_float_imag(z) (cimag(z)) 104 | #define lapack_complex_double_real(z) (creal(z)) 105 | #define lapack_complex_double_imag(z) (cimag(z)) 106 | 107 | #endif 108 | 109 | lapack_complex_float lapack_make_complex_float( float re, float im ); 110 | lapack_complex_double lapack_make_complex_double( double re, double im ); 111 | 112 | #endif 113 | 114 | #ifndef LAPACK_malloc 115 | #define LAPACK_malloc( size ) malloc( size ) 116 | #endif 117 | 118 | #ifndef LAPACK_free 119 | #define LAPACK_free( p ) free( p ) 120 | #endif 121 | 122 | #ifdef __cplusplus 123 | } 124 | #endif /* __cplusplus */ 125 | 126 | #endif /* _LAPACKE_CONFIG_H_ */ 127 | -------------------------------------------------------------------------------- /output/mips64include/lapacke_mangling.h: -------------------------------------------------------------------------------- 1 | #ifndef LAPACK_HEADER_INCLUDED 2 | #define LAPACK_HEADER_INCLUDED 3 | 4 | #ifndef LAPACK_GLOBAL 5 | #if defined(LAPACK_GLOBAL_PATTERN_LC) || defined(ADD_) 6 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname##_ 7 | #elif defined(LAPACK_GLOBAL_PATTERN_UC) || defined(UPPER) 8 | #define LAPACK_GLOBAL(lcname,UCNAME) UCNAME 9 | #elif defined(LAPACK_GLOBAL_PATTERN_MC) || defined(NOCHANGE) 10 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname 11 | #else 12 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname##_ 13 | #endif 14 | #endif 15 | 16 | #endif 17 | 18 | -------------------------------------------------------------------------------- /output/mips64include/lapacke_utils.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | Copyright (c) 2014, Intel Corp. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | * Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | * Neither the name of Intel Corporation nor the names of its contributors 14 | may be used to endorse or promote products derived from this software 15 | without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 27 | THE POSSIBILITY OF SUCH DAMAGE. 28 | ****************************************************************************** 29 | * Contents: Native C interface to LAPACK utility functions 30 | * Author: Intel Corporation 31 | * Created in January, 2010 32 | *****************************************************************************/ 33 | 34 | #ifndef _LAPACKE_UTILS_H_ 35 | #define _LAPACKE_UTILS_H_ 36 | 37 | #include "lapacke.h" 38 | 39 | #ifdef __cplusplus 40 | extern "C" { 41 | #endif /* __cplusplus */ 42 | 43 | #ifndef ABS 44 | #define ABS(x) (((x) < 0) ? -(x) : (x)) 45 | #endif 46 | #ifndef MAX 47 | #define MAX(x,y) (((x) > (y)) ? (x) : (y)) 48 | #endif 49 | #ifndef MIN 50 | #define MIN(x,y) (((x) < (y)) ? (x) : (y)) 51 | #endif 52 | #ifndef MAX3 53 | #define MAX3(x,y,z) (((x) > MAX(y,z)) ? (x) : MAX(y,z)) 54 | #endif 55 | #ifndef MIN3 56 | #define MIN3(x,y,z) (((x) < MIN(y,z)) ? (x) : MIN(y,z)) 57 | #endif 58 | 59 | #define IS_S_NONZERO(x) ( (x) < 0 || (x) > 0 ) 60 | #define IS_D_NONZERO(x) ( (x) < 0 || (x) > 0 ) 61 | #define IS_C_NONZERO(x) ( IS_S_NONZERO(*((float*)&x)) || \ 62 | IS_S_NONZERO(*(((float*)&x)+1)) ) 63 | #define IS_Z_NONZERO(x) ( IS_D_NONZERO(*((double*)&x)) || \ 64 | IS_D_NONZERO(*(((double*)&x)+1)) ) 65 | 66 | /* Error handler */ 67 | void LAPACKE_xerbla( const char *name, lapack_int info ); 68 | 69 | /* Compare two chars (case-insensitive) */ 70 | lapack_logical LAPACKE_lsame( char ca, char cb ); 71 | 72 | /* Functions to convert column-major to row-major 2d arrays and vice versa. */ 73 | void LAPACKE_cgb_trans( int matrix_layout, lapack_int m, lapack_int n, 74 | lapack_int kl, lapack_int ku, 75 | const lapack_complex_float *in, lapack_int ldin, 76 | lapack_complex_float *out, lapack_int ldout ); 77 | void LAPACKE_cge_trans( int matrix_layout, lapack_int m, lapack_int n, 78 | const lapack_complex_float* in, lapack_int ldin, 79 | lapack_complex_float* out, lapack_int ldout ); 80 | void LAPACKE_cgg_trans( int matrix_layout, lapack_int m, lapack_int n, 81 | const lapack_complex_float* in, lapack_int ldin, 82 | lapack_complex_float* out, lapack_int ldout ); 83 | void LAPACKE_chb_trans( int matrix_layout, char uplo, lapack_int n, 84 | lapack_int kd, 85 | const lapack_complex_float *in, lapack_int ldin, 86 | lapack_complex_float *out, lapack_int ldout ); 87 | void LAPACKE_che_trans( int matrix_layout, char uplo, lapack_int n, 88 | const lapack_complex_float *in, lapack_int ldin, 89 | lapack_complex_float *out, lapack_int ldout ); 90 | void LAPACKE_chp_trans( int matrix_layout, char uplo, lapack_int n, 91 | const lapack_complex_float *in, 92 | lapack_complex_float *out ); 93 | void LAPACKE_chs_trans( int matrix_layout, lapack_int n, 94 | const lapack_complex_float *in, lapack_int ldin, 95 | lapack_complex_float *out, lapack_int ldout ); 96 | void LAPACKE_cpb_trans( int matrix_layout, char uplo, lapack_int n, 97 | lapack_int kd, 98 | const lapack_complex_float *in, lapack_int ldin, 99 | lapack_complex_float *out, lapack_int ldout ); 100 | void LAPACKE_cpf_trans( int matrix_layout, char transr, char uplo, 101 | lapack_int n, const lapack_complex_float *in, 102 | lapack_complex_float *out ); 103 | void LAPACKE_cpo_trans( int matrix_layout, char uplo, lapack_int n, 104 | const lapack_complex_float *in, lapack_int ldin, 105 | lapack_complex_float *out, lapack_int ldout ); 106 | void LAPACKE_cpp_trans( int matrix_layout, char uplo, lapack_int n, 107 | const lapack_complex_float *in, 108 | lapack_complex_float *out ); 109 | void LAPACKE_csp_trans( int matrix_layout, char uplo, lapack_int n, 110 | const lapack_complex_float *in, 111 | lapack_complex_float *out ); 112 | void LAPACKE_csy_trans( int matrix_layout, char uplo, lapack_int n, 113 | const lapack_complex_float *in, lapack_int ldin, 114 | lapack_complex_float *out, lapack_int ldout ); 115 | void LAPACKE_ctb_trans( int matrix_layout, char uplo, char diag, 116 | lapack_int n, lapack_int kd, 117 | const lapack_complex_float *in, lapack_int ldin, 118 | lapack_complex_float *out, lapack_int ldout ); 119 | void LAPACKE_ctf_trans( int matrix_layout, char transr, char uplo, char diag, 120 | lapack_int n, const lapack_complex_float *in, 121 | lapack_complex_float *out ); 122 | void LAPACKE_ctp_trans( int matrix_layout, char uplo, char diag, 123 | lapack_int n, const lapack_complex_float *in, 124 | lapack_complex_float *out ); 125 | void LAPACKE_ctr_trans( int matrix_layout, char uplo, char diag, lapack_int n, 126 | const lapack_complex_float *in, lapack_int ldin, 127 | lapack_complex_float *out, lapack_int ldout ); 128 | 129 | void LAPACKE_dgb_trans( int matrix_layout, lapack_int m, lapack_int n, 130 | lapack_int kl, lapack_int ku, 131 | const double *in, lapack_int ldin, 132 | double *out, lapack_int ldout ); 133 | void LAPACKE_dge_trans( int matrix_layout, lapack_int m, lapack_int n, 134 | const double* in, lapack_int ldin, 135 | double* out, lapack_int ldout ); 136 | void LAPACKE_dgg_trans( int matrix_layout, lapack_int m, lapack_int n, 137 | const double* in, lapack_int ldin, 138 | double* out, lapack_int ldout ); 139 | void LAPACKE_dhs_trans( int matrix_layout, lapack_int n, 140 | const double *in, lapack_int ldin, 141 | double *out, lapack_int ldout ); 142 | void LAPACKE_dpb_trans( int matrix_layout, char uplo, lapack_int n, 143 | lapack_int kd, 144 | const double *in, lapack_int ldin, 145 | double *out, lapack_int ldout ); 146 | void LAPACKE_dpf_trans( int matrix_layout, char transr, char uplo, 147 | lapack_int n, const double *in, 148 | double *out ); 149 | void LAPACKE_dpo_trans( int matrix_layout, char uplo, lapack_int n, 150 | const double *in, lapack_int ldin, 151 | double *out, lapack_int ldout ); 152 | void LAPACKE_dpp_trans( int matrix_layout, char uplo, lapack_int n, 153 | const double *in, 154 | double *out ); 155 | void LAPACKE_dsb_trans( int matrix_layout, char uplo, lapack_int n, 156 | lapack_int kd, 157 | const double *in, lapack_int ldin, 158 | double *out, lapack_int ldout ); 159 | void LAPACKE_dsp_trans( int matrix_layout, char uplo, lapack_int n, 160 | const double *in, 161 | double *out ); 162 | void LAPACKE_dsy_trans( int matrix_layout, char uplo, lapack_int n, 163 | const double *in, lapack_int ldin, 164 | double *out, lapack_int ldout ); 165 | void LAPACKE_dtb_trans( int matrix_layout, char uplo, char diag, 166 | lapack_int n, lapack_int kd, 167 | const double *in, lapack_int ldin, 168 | double *out, lapack_int ldout ); 169 | void LAPACKE_dtf_trans( int matrix_layout, char transr, char uplo, char diag, 170 | lapack_int n, const double *in, 171 | double *out ); 172 | void LAPACKE_dtp_trans( int matrix_layout, char uplo, char diag, 173 | lapack_int n, const double *in, 174 | double *out ); 175 | void LAPACKE_dtr_trans( int matrix_layout, char uplo, char diag, lapack_int n, 176 | const double *in, lapack_int ldin, 177 | double *out, lapack_int ldout ); 178 | 179 | void LAPACKE_sgb_trans( int matrix_layout, lapack_int m, lapack_int n, 180 | lapack_int kl, lapack_int ku, 181 | const float *in, lapack_int ldin, 182 | float *out, lapack_int ldout ); 183 | void LAPACKE_sge_trans( int matrix_layout, lapack_int m, lapack_int n, 184 | const float* in, lapack_int ldin, 185 | float* out, lapack_int ldout ); 186 | void LAPACKE_sgg_trans( int matrix_layout, lapack_int m, lapack_int n, 187 | const float* in, lapack_int ldin, 188 | float* out, lapack_int ldout ); 189 | void LAPACKE_shs_trans( int matrix_layout, lapack_int n, 190 | const float *in, lapack_int ldin, 191 | float *out, lapack_int ldout ); 192 | void LAPACKE_spb_trans( int matrix_layout, char uplo, lapack_int n, 193 | lapack_int kd, 194 | const float *in, lapack_int ldin, 195 | float *out, lapack_int ldout ); 196 | void LAPACKE_spf_trans( int matrix_layout, char transr, char uplo, 197 | lapack_int n, const float *in, 198 | float *out ); 199 | void LAPACKE_spo_trans( int matrix_layout, char uplo, lapack_int n, 200 | const float *in, lapack_int ldin, 201 | float *out, lapack_int ldout ); 202 | void LAPACKE_spp_trans( int matrix_layout, char uplo, lapack_int n, 203 | const float *in, 204 | float *out ); 205 | void LAPACKE_ssb_trans( int matrix_layout, char uplo, lapack_int n, 206 | lapack_int kd, 207 | const float *in, lapack_int ldin, 208 | float *out, lapack_int ldout ); 209 | void LAPACKE_ssp_trans( int matrix_layout, char uplo, lapack_int n, 210 | const float *in, 211 | float *out ); 212 | void LAPACKE_ssy_trans( int matrix_layout, char uplo, lapack_int n, 213 | const float *in, lapack_int ldin, 214 | float *out, lapack_int ldout ); 215 | void LAPACKE_stb_trans( int matrix_layout, char uplo, char diag, 216 | lapack_int n, lapack_int kd, 217 | const float *in, lapack_int ldin, 218 | float *out, lapack_int ldout ); 219 | void LAPACKE_stf_trans( int matrix_layout, char transr, char uplo, char diag, 220 | lapack_int n, const float *in, 221 | float *out ); 222 | void LAPACKE_stp_trans( int matrix_layout, char uplo, char diag, 223 | lapack_int n, const float *in, 224 | float *out ); 225 | void LAPACKE_str_trans( int matrix_layout, char uplo, char diag, lapack_int n, 226 | const float *in, lapack_int ldin, 227 | float *out, lapack_int ldout ); 228 | 229 | void LAPACKE_zgb_trans( int matrix_layout, lapack_int m, lapack_int n, 230 | lapack_int kl, lapack_int ku, 231 | const lapack_complex_double *in, lapack_int ldin, 232 | lapack_complex_double *out, lapack_int ldout ); 233 | void LAPACKE_zge_trans( int matrix_layout, lapack_int m, lapack_int n, 234 | const lapack_complex_double* in, lapack_int ldin, 235 | lapack_complex_double* out, lapack_int ldout ); 236 | void LAPACKE_zgg_trans( int matrix_layout, lapack_int m, lapack_int n, 237 | const lapack_complex_double* in, lapack_int ldin, 238 | lapack_complex_double* out, lapack_int ldout ); 239 | void LAPACKE_zhb_trans( int matrix_layout, char uplo, lapack_int n, 240 | lapack_int kd, 241 | const lapack_complex_double *in, lapack_int ldin, 242 | lapack_complex_double *out, lapack_int ldout ); 243 | void LAPACKE_zhe_trans( int matrix_layout, char uplo, lapack_int n, 244 | const lapack_complex_double *in, lapack_int ldin, 245 | lapack_complex_double *out, lapack_int ldout ); 246 | void LAPACKE_zhp_trans( int matrix_layout, char uplo, lapack_int n, 247 | const lapack_complex_double *in, 248 | lapack_complex_double *out ); 249 | void LAPACKE_zhs_trans( int matrix_layout, lapack_int n, 250 | const lapack_complex_double *in, lapack_int ldin, 251 | lapack_complex_double *out, lapack_int ldout ); 252 | void LAPACKE_zpb_trans( int matrix_layout, char uplo, lapack_int n, 253 | lapack_int kd, 254 | const lapack_complex_double *in, lapack_int ldin, 255 | lapack_complex_double *out, lapack_int ldout ); 256 | void LAPACKE_zpf_trans( int matrix_layout, char transr, char uplo, 257 | lapack_int n, const lapack_complex_double *in, 258 | lapack_complex_double *out ); 259 | void LAPACKE_zpo_trans( int matrix_layout, char uplo, lapack_int n, 260 | const lapack_complex_double *in, lapack_int ldin, 261 | lapack_complex_double *out, lapack_int ldout ); 262 | void LAPACKE_zpp_trans( int matrix_layout, char uplo, lapack_int n, 263 | const lapack_complex_double *in, 264 | lapack_complex_double *out ); 265 | void LAPACKE_zsp_trans( int matrix_layout, char uplo, lapack_int n, 266 | const lapack_complex_double *in, 267 | lapack_complex_double *out ); 268 | void LAPACKE_zsy_trans( int matrix_layout, char uplo, lapack_int n, 269 | const lapack_complex_double *in, lapack_int ldin, 270 | lapack_complex_double *out, lapack_int ldout ); 271 | void LAPACKE_ztb_trans( int matrix_layout, char uplo, char diag, 272 | lapack_int n, lapack_int kd, 273 | const lapack_complex_double *in, lapack_int ldin, 274 | lapack_complex_double *out, lapack_int ldout ); 275 | void LAPACKE_ztf_trans( int matrix_layout, char transr, char uplo, char diag, 276 | lapack_int n, const lapack_complex_double *in, 277 | lapack_complex_double *out ); 278 | void LAPACKE_ztp_trans( int matrix_layout, char uplo, char diag, 279 | lapack_int n, const lapack_complex_double *in, 280 | lapack_complex_double *out ); 281 | void LAPACKE_ztr_trans( int matrix_layout, char uplo, char diag, lapack_int n, 282 | const lapack_complex_double *in, lapack_int ldin, 283 | lapack_complex_double *out, lapack_int ldout ); 284 | 285 | /* NaN checkers */ 286 | #define LAPACK_SISNAN( x ) ( x != x ) 287 | #define LAPACK_DISNAN( x ) ( x != x ) 288 | #define LAPACK_CISNAN( x ) ( LAPACK_SISNAN(*((float*) &x)) || \ 289 | LAPACK_SISNAN(*(((float*) &x)+1)) ) 290 | #define LAPACK_ZISNAN( x ) ( LAPACK_DISNAN(*((double*)&x)) || \ 291 | LAPACK_DISNAN(*(((double*)&x)+1)) ) 292 | 293 | /* NaN checkers for vectors */ 294 | lapack_logical LAPACKE_c_nancheck( lapack_int n, 295 | const lapack_complex_float *x, 296 | lapack_int incx ); 297 | lapack_logical LAPACKE_d_nancheck( lapack_int n, 298 | const double *x, 299 | lapack_int incx ); 300 | lapack_logical LAPACKE_s_nancheck( lapack_int n, 301 | const float *x, 302 | lapack_int incx ); 303 | lapack_logical LAPACKE_z_nancheck( lapack_int n, 304 | const lapack_complex_double *x, 305 | lapack_int incx ); 306 | /* NaN checkers for matrices */ 307 | lapack_logical LAPACKE_cgb_nancheck( int matrix_layout, lapack_int m, 308 | lapack_int n, lapack_int kl, 309 | lapack_int ku, 310 | const lapack_complex_float *ab, 311 | lapack_int ldab ); 312 | lapack_logical LAPACKE_cge_nancheck( int matrix_layout, lapack_int m, 313 | lapack_int n, 314 | const lapack_complex_float *a, 315 | lapack_int lda ); 316 | lapack_logical LAPACKE_cgg_nancheck( int matrix_layout, lapack_int m, 317 | lapack_int n, 318 | const lapack_complex_float *a, 319 | lapack_int lda ); 320 | lapack_logical LAPACKE_cgt_nancheck( lapack_int n, 321 | const lapack_complex_float *dl, 322 | const lapack_complex_float *d, 323 | const lapack_complex_float *du ); 324 | lapack_logical LAPACKE_chb_nancheck( int matrix_layout, char uplo, 325 | lapack_int n, lapack_int kd, 326 | const lapack_complex_float* ab, 327 | lapack_int ldab ); 328 | lapack_logical LAPACKE_che_nancheck( int matrix_layout, char uplo, 329 | lapack_int n, 330 | const lapack_complex_float *a, 331 | lapack_int lda ); 332 | lapack_logical LAPACKE_chp_nancheck( lapack_int n, 333 | const lapack_complex_float *ap ); 334 | lapack_logical LAPACKE_chs_nancheck( int matrix_layout, lapack_int n, 335 | const lapack_complex_float *a, 336 | lapack_int lda ); 337 | lapack_logical LAPACKE_cpb_nancheck( int matrix_layout, char uplo, 338 | lapack_int n, lapack_int kd, 339 | const lapack_complex_float* ab, 340 | lapack_int ldab ); 341 | lapack_logical LAPACKE_cpf_nancheck( lapack_int n, 342 | const lapack_complex_float *a ); 343 | lapack_logical LAPACKE_cpo_nancheck( int matrix_layout, char uplo, 344 | lapack_int n, 345 | const lapack_complex_float *a, 346 | lapack_int lda ); 347 | lapack_logical LAPACKE_cpp_nancheck( lapack_int n, 348 | const lapack_complex_float *ap ); 349 | lapack_logical LAPACKE_cpt_nancheck( lapack_int n, 350 | const float *d, 351 | const lapack_complex_float *e ); 352 | lapack_logical LAPACKE_csp_nancheck( lapack_int n, 353 | const lapack_complex_float *ap ); 354 | lapack_logical LAPACKE_cst_nancheck( lapack_int n, 355 | const lapack_complex_float *d, 356 | const lapack_complex_float *e ); 357 | lapack_logical LAPACKE_csy_nancheck( int matrix_layout, char uplo, 358 | lapack_int n, 359 | const lapack_complex_float *a, 360 | lapack_int lda ); 361 | lapack_logical LAPACKE_ctb_nancheck( int matrix_layout, char uplo, char diag, 362 | lapack_int n, lapack_int kd, 363 | const lapack_complex_float* ab, 364 | lapack_int ldab ); 365 | lapack_logical LAPACKE_ctf_nancheck( int matrix_layout, char transr, 366 | char uplo, char diag, 367 | lapack_int n, 368 | const lapack_complex_float *a ); 369 | lapack_logical LAPACKE_ctp_nancheck( int matrix_layout, char uplo, char diag, 370 | lapack_int n, 371 | const lapack_complex_float *ap ); 372 | lapack_logical LAPACKE_ctr_nancheck( int matrix_layout, char uplo, char diag, 373 | lapack_int n, 374 | const lapack_complex_float *a, 375 | lapack_int lda ); 376 | 377 | lapack_logical LAPACKE_dgb_nancheck( int matrix_layout, lapack_int m, 378 | lapack_int n, lapack_int kl, 379 | lapack_int ku, 380 | const double *ab, 381 | lapack_int ldab ); 382 | lapack_logical LAPACKE_dge_nancheck( int matrix_layout, lapack_int m, 383 | lapack_int n, 384 | const double *a, 385 | lapack_int lda ); 386 | lapack_logical LAPACKE_dgg_nancheck( int matrix_layout, lapack_int m, 387 | lapack_int n, 388 | const double *a, 389 | lapack_int lda ); 390 | lapack_logical LAPACKE_dgt_nancheck( lapack_int n, 391 | const double *dl, 392 | const double *d, 393 | const double *du ); 394 | lapack_logical LAPACKE_dhs_nancheck( int matrix_layout, lapack_int n, 395 | const double *a, 396 | lapack_int lda ); 397 | lapack_logical LAPACKE_dpb_nancheck( int matrix_layout, char uplo, 398 | lapack_int n, lapack_int kd, 399 | const double* ab, 400 | lapack_int ldab ); 401 | lapack_logical LAPACKE_dpf_nancheck( lapack_int n, 402 | const double *a ); 403 | lapack_logical LAPACKE_dpo_nancheck( int matrix_layout, char uplo, 404 | lapack_int n, 405 | const double *a, 406 | lapack_int lda ); 407 | lapack_logical LAPACKE_dpp_nancheck( lapack_int n, 408 | const double *ap ); 409 | lapack_logical LAPACKE_dpt_nancheck( lapack_int n, 410 | const double *d, 411 | const double *e ); 412 | lapack_logical LAPACKE_dsb_nancheck( int matrix_layout, char uplo, 413 | lapack_int n, lapack_int kd, 414 | const double* ab, 415 | lapack_int ldab ); 416 | lapack_logical LAPACKE_dsp_nancheck( lapack_int n, 417 | const double *ap ); 418 | lapack_logical LAPACKE_dst_nancheck( lapack_int n, 419 | const double *d, 420 | const double *e ); 421 | lapack_logical LAPACKE_dsy_nancheck( int matrix_layout, char uplo, 422 | lapack_int n, 423 | const double *a, 424 | lapack_int lda ); 425 | lapack_logical LAPACKE_dtb_nancheck( int matrix_layout, char uplo, char diag, 426 | lapack_int n, lapack_int kd, 427 | const double* ab, 428 | lapack_int ldab ); 429 | lapack_logical LAPACKE_dtf_nancheck( int matrix_layout, char transr, 430 | char uplo, char diag, 431 | lapack_int n, 432 | const double *a ); 433 | lapack_logical LAPACKE_dtp_nancheck( int matrix_layout, char uplo, char diag, 434 | lapack_int n, 435 | const double *ap ); 436 | lapack_logical LAPACKE_dtr_nancheck( int matrix_layout, char uplo, char diag, 437 | lapack_int n, 438 | const double *a, 439 | lapack_int lda ); 440 | 441 | lapack_logical LAPACKE_sgb_nancheck( int matrix_layout, lapack_int m, 442 | lapack_int n, lapack_int kl, 443 | lapack_int ku, 444 | const float *ab, 445 | lapack_int ldab ); 446 | lapack_logical LAPACKE_sge_nancheck( int matrix_layout, lapack_int m, 447 | lapack_int n, 448 | const float *a, 449 | lapack_int lda ); 450 | lapack_logical LAPACKE_sgg_nancheck( int matrix_layout, lapack_int m, 451 | lapack_int n, 452 | const float *a, 453 | lapack_int lda ); 454 | lapack_logical LAPACKE_sgt_nancheck( lapack_int n, 455 | const float *dl, 456 | const float *d, 457 | const float *du ); 458 | lapack_logical LAPACKE_shs_nancheck( int matrix_layout, lapack_int n, 459 | const float *a, 460 | lapack_int lda ); 461 | lapack_logical LAPACKE_spb_nancheck( int matrix_layout, char uplo, 462 | lapack_int n, lapack_int kd, 463 | const float* ab, 464 | lapack_int ldab ); 465 | lapack_logical LAPACKE_spf_nancheck( lapack_int n, 466 | const float *a ); 467 | lapack_logical LAPACKE_spo_nancheck( int matrix_layout, char uplo, 468 | lapack_int n, 469 | const float *a, 470 | lapack_int lda ); 471 | lapack_logical LAPACKE_spp_nancheck( lapack_int n, 472 | const float *ap ); 473 | lapack_logical LAPACKE_spt_nancheck( lapack_int n, 474 | const float *d, 475 | const float *e ); 476 | lapack_logical LAPACKE_ssb_nancheck( int matrix_layout, char uplo, 477 | lapack_int n, lapack_int kd, 478 | const float* ab, 479 | lapack_int ldab ); 480 | lapack_logical LAPACKE_ssp_nancheck( lapack_int n, 481 | const float *ap ); 482 | lapack_logical LAPACKE_sst_nancheck( lapack_int n, 483 | const float *d, 484 | const float *e ); 485 | lapack_logical LAPACKE_ssy_nancheck( int matrix_layout, char uplo, 486 | lapack_int n, 487 | const float *a, 488 | lapack_int lda ); 489 | lapack_logical LAPACKE_stb_nancheck( int matrix_layout, char uplo, char diag, 490 | lapack_int n, lapack_int kd, 491 | const float* ab, 492 | lapack_int ldab ); 493 | lapack_logical LAPACKE_stf_nancheck( int matrix_layout, char transr, 494 | char uplo, char diag, 495 | lapack_int n, 496 | const float *a ); 497 | lapack_logical LAPACKE_stp_nancheck( int matrix_layout, char uplo, char diag, 498 | lapack_int n, 499 | const float *ap ); 500 | lapack_logical LAPACKE_str_nancheck( int matrix_layout, char uplo, char diag, 501 | lapack_int n, 502 | const float *a, 503 | lapack_int lda ); 504 | 505 | lapack_logical LAPACKE_zgb_nancheck( int matrix_layout, lapack_int m, 506 | lapack_int n, lapack_int kl, 507 | lapack_int ku, 508 | const lapack_complex_double *ab, 509 | lapack_int ldab ); 510 | lapack_logical LAPACKE_zge_nancheck( int matrix_layout, lapack_int m, 511 | lapack_int n, 512 | const lapack_complex_double *a, 513 | lapack_int lda ); 514 | lapack_logical LAPACKE_zgg_nancheck( int matrix_layout, lapack_int m, 515 | lapack_int n, 516 | const lapack_complex_double *a, 517 | lapack_int lda ); 518 | lapack_logical LAPACKE_zgt_nancheck( lapack_int n, 519 | const lapack_complex_double *dl, 520 | const lapack_complex_double *d, 521 | const lapack_complex_double *du ); 522 | lapack_logical LAPACKE_zhb_nancheck( int matrix_layout, char uplo, 523 | lapack_int n, lapack_int kd, 524 | const lapack_complex_double* ab, 525 | lapack_int ldab ); 526 | lapack_logical LAPACKE_zhe_nancheck( int matrix_layout, char uplo, 527 | lapack_int n, 528 | const lapack_complex_double *a, 529 | lapack_int lda ); 530 | lapack_logical LAPACKE_zhp_nancheck( lapack_int n, 531 | const lapack_complex_double *ap ); 532 | lapack_logical LAPACKE_zhs_nancheck( int matrix_layout, lapack_int n, 533 | const lapack_complex_double *a, 534 | lapack_int lda ); 535 | lapack_logical LAPACKE_zpb_nancheck( int matrix_layout, char uplo, 536 | lapack_int n, lapack_int kd, 537 | const lapack_complex_double* ab, 538 | lapack_int ldab ); 539 | lapack_logical LAPACKE_zpf_nancheck( lapack_int n, 540 | const lapack_complex_double *a ); 541 | lapack_logical LAPACKE_zpo_nancheck( int matrix_layout, char uplo, 542 | lapack_int n, 543 | const lapack_complex_double *a, 544 | lapack_int lda ); 545 | lapack_logical LAPACKE_zpp_nancheck( lapack_int n, 546 | const lapack_complex_double *ap ); 547 | lapack_logical LAPACKE_zpt_nancheck( lapack_int n, 548 | const double *d, 549 | const lapack_complex_double *e ); 550 | lapack_logical LAPACKE_zsp_nancheck( lapack_int n, 551 | const lapack_complex_double *ap ); 552 | lapack_logical LAPACKE_zst_nancheck( lapack_int n, 553 | const lapack_complex_double *d, 554 | const lapack_complex_double *e ); 555 | lapack_logical LAPACKE_zsy_nancheck( int matrix_layout, char uplo, 556 | lapack_int n, 557 | const lapack_complex_double *a, 558 | lapack_int lda ); 559 | lapack_logical LAPACKE_ztb_nancheck( int matrix_layout, char uplo, char diag, 560 | lapack_int n, lapack_int kd, 561 | const lapack_complex_double* ab, 562 | lapack_int ldab ); 563 | lapack_logical LAPACKE_ztf_nancheck( int matrix_layout, char transr, 564 | char uplo, char diag, 565 | lapack_int n, 566 | const lapack_complex_double *a ); 567 | lapack_logical LAPACKE_ztp_nancheck( int matrix_layout, char uplo, char diag, 568 | lapack_int n, 569 | const lapack_complex_double *ap ); 570 | lapack_logical LAPACKE_ztr_nancheck( int matrix_layout, char uplo, char diag, 571 | lapack_int n, 572 | const lapack_complex_double *a, 573 | lapack_int lda ); 574 | 575 | #ifdef __cplusplus 576 | } 577 | #endif /* __cplusplus */ 578 | 579 | #endif /* _LAPACKE_UTILS_H_ */ 580 | -------------------------------------------------------------------------------- /output/mips64include/openblas_config.h: -------------------------------------------------------------------------------- 1 | #ifndef OPENBLAS_CONFIG_H 2 | #define OPENBLAS_CONFIG_H 3 | #define OPENBLAS_OS_ANDROID 1 4 | #define OPENBLAS_ARCH_MIPS64 1 5 | #define OPENBLAS_C_GCC 1 6 | #define OPENBLAS___64BIT__ 1 7 | #define OPENBLAS_PTHREAD_CREATE_FUNC pthread_create 8 | #define OPENBLAS_BUNDERSCORE _ 9 | #define OPENBLAS_NEEDBUNDERSCORE 1 10 | #define OPENBLAS_SICORTEX 11 | #define OPENBLAS_L1_DATA_SIZE 32768 12 | #define OPENBLAS_L1_DATA_LINESIZE 32 13 | #define OPENBLAS_L2_SIZE 512488 14 | #define OPENBLAS_L2_LINESIZE 32 15 | #define OPENBLAS_DTB_DEFAULT_ENTRIES 32 16 | #define OPENBLAS_DTB_SIZE 4096 17 | #define OPENBLAS_L2_ASSOCIATIVE 8 18 | #define OPENBLAS_CORE_sicortex 19 | #define OPENBLAS_CHAR_CORENAME "sicortex" 20 | #define OPENBLAS_GEMM_MULTITHREAD_THRESHOLD 4 21 | #define OPENBLAS_VERSION " OpenBLAS 0.2.20.dev " 22 | /*This is only for "make install" target.*/ 23 | 24 | #if defined(OPENBLAS_OS_WINNT) || defined(OPENBLAS_OS_CYGWIN_NT) || defined(OPENBLAS_OS_INTERIX) 25 | #define OPENBLAS_WINDOWS_ABI 26 | #define OPENBLAS_OS_WINDOWS 27 | 28 | #ifdef DOUBLE 29 | #define DOUBLE_DEFINED DOUBLE 30 | #undef DOUBLE 31 | #endif 32 | #endif 33 | 34 | #ifdef OPENBLAS_NEEDBUNDERSCORE 35 | #define BLASFUNC(FUNC) FUNC##_ 36 | #else 37 | #define BLASFUNC(FUNC) FUNC 38 | #endif 39 | 40 | #ifdef OPENBLAS_QUAD_PRECISION 41 | typedef struct { 42 | unsigned long x[2]; 43 | } xdouble; 44 | #elif defined OPENBLAS_EXPRECISION 45 | #define xdouble long double 46 | #else 47 | #define xdouble double 48 | #endif 49 | 50 | #if defined(OPENBLAS_OS_WINDOWS) && defined(OPENBLAS___64BIT__) 51 | typedef long long BLASLONG; 52 | typedef unsigned long long BLASULONG; 53 | #else 54 | typedef long BLASLONG; 55 | typedef unsigned long BLASULONG; 56 | #endif 57 | 58 | #ifdef OPENBLAS_USE64BITINT 59 | typedef BLASLONG blasint; 60 | #else 61 | typedef int blasint; 62 | #endif 63 | 64 | #if defined(XDOUBLE) || defined(DOUBLE) 65 | #define FLOATRET FLOAT 66 | #else 67 | #ifdef NEED_F2CCONV 68 | #define FLOATRET double 69 | #else 70 | #define FLOATRET float 71 | #endif 72 | #endif 73 | 74 | /* Inclusion of a standard header file is needed for definition of __STDC_* 75 | predefined macros with some compilers (e.g. GCC 4.7 on Linux). This occurs 76 | as a side effect of including either or . */ 77 | #include 78 | 79 | /* C99 supports complex floating numbers natively, which GCC also offers as an 80 | extension since version 3.0. If neither are available, use a compatible 81 | structure as fallback (see Clause 6.2.5.13 of the C99 standard). */ 82 | #if ((defined(__STDC_IEC_559_COMPLEX__) || __STDC_VERSION__ >= 199901L || \ 83 | (__GNUC__ >= 3 && !defined(__cplusplus))) && !(defined(FORCE_OPENBLAS_COMPLEX_STRUCT))) 84 | #define OPENBLAS_COMPLEX_C99 85 | #ifndef __cplusplus 86 | #include 87 | #endif 88 | typedef float _Complex openblas_complex_float; 89 | typedef double _Complex openblas_complex_double; 90 | typedef xdouble _Complex openblas_complex_xdouble; 91 | #define openblas_make_complex_float(real, imag) ((real) + ((imag) * _Complex_I)) 92 | #define openblas_make_complex_double(real, imag) ((real) + ((imag) * _Complex_I)) 93 | #define openblas_make_complex_xdouble(real, imag) ((real) + ((imag) * _Complex_I)) 94 | #define openblas_complex_float_real(z) (creal(z)) 95 | #define openblas_complex_float_imag(z) (cimag(z)) 96 | #define openblas_complex_double_real(z) (creal(z)) 97 | #define openblas_complex_double_imag(z) (cimag(z)) 98 | #define openblas_complex_xdouble_real(z) (creal(z)) 99 | #define openblas_complex_xdouble_imag(z) (cimag(z)) 100 | #else 101 | #define OPENBLAS_COMPLEX_STRUCT 102 | typedef struct { float real, imag; } openblas_complex_float; 103 | typedef struct { double real, imag; } openblas_complex_double; 104 | typedef struct { xdouble real, imag; } openblas_complex_xdouble; 105 | #define openblas_make_complex_float(real, imag) {(real), (imag)} 106 | #define openblas_make_complex_double(real, imag) {(real), (imag)} 107 | #define openblas_make_complex_xdouble(real, imag) {(real), (imag)} 108 | #define openblas_complex_float_real(z) ((z).real) 109 | #define openblas_complex_float_imag(z) ((z).imag) 110 | #define openblas_complex_double_real(z) ((z).real) 111 | #define openblas_complex_double_imag(z) ((z).imag) 112 | #define openblas_complex_xdouble_real(z) ((z).real) 113 | #define openblas_complex_xdouble_imag(z) ((z).imag) 114 | #endif 115 | #endif /* OPENBLAS_CONFIG_H */ 116 | -------------------------------------------------------------------------------- /output/mipsinclude/openblas_config.h: -------------------------------------------------------------------------------- 1 | #ifndef OPENBLAS_CONFIG_H 2 | #define OPENBLAS_CONFIG_H 3 | #define OPENBLAS_OS_ANDROID 1 4 | #define OPENBLAS_ARCH_MIPS 1 5 | #define OPENBLAS_C_GCC 1 6 | #define OPENBLAS___32BIT__ 1 7 | #define OPENBLAS_PTHREAD_CREATE_FUNC pthread_create 8 | #define OPENBLAS_BUNDERSCORE _ 9 | #define OPENBLAS_NEEDBUNDERSCORE 1 10 | #define OPENBLAS_P5600 11 | #define OPENBLAS_L1_DATA_SIZE 65536 12 | #define OPENBLAS_L1_DATA_LINESIZE 32 13 | #define OPENBLAS_L2_SIZE 1048576 14 | #define OPENBLAS_L2_LINESIZE 32 15 | #define OPENBLAS_DTB_DEFAULT_ENTRIES 64 16 | #define OPENBLAS_DTB_SIZE 4096 17 | #define OPENBLAS_L2_ASSOCIATIVE 8 18 | #define OPENBLAS_CORE_P5600 19 | #define OPENBLAS_CHAR_CORENAME "P5600" 20 | #define OPENBLAS_GEMM_MULTITHREAD_THRESHOLD 4 21 | #define OPENBLAS_VERSION " OpenBLAS 0.2.20.dev " 22 | /*This is only for "make install" target.*/ 23 | 24 | #if defined(OPENBLAS_OS_WINNT) || defined(OPENBLAS_OS_CYGWIN_NT) || defined(OPENBLAS_OS_INTERIX) 25 | #define OPENBLAS_WINDOWS_ABI 26 | #define OPENBLAS_OS_WINDOWS 27 | 28 | #ifdef DOUBLE 29 | #define DOUBLE_DEFINED DOUBLE 30 | #undef DOUBLE 31 | #endif 32 | #endif 33 | 34 | #ifdef OPENBLAS_NEEDBUNDERSCORE 35 | #define BLASFUNC(FUNC) FUNC##_ 36 | #else 37 | #define BLASFUNC(FUNC) FUNC 38 | #endif 39 | 40 | #ifdef OPENBLAS_QUAD_PRECISION 41 | typedef struct { 42 | unsigned long x[2]; 43 | } xdouble; 44 | #elif defined OPENBLAS_EXPRECISION 45 | #define xdouble long double 46 | #else 47 | #define xdouble double 48 | #endif 49 | 50 | #if defined(OPENBLAS_OS_WINDOWS) && defined(OPENBLAS___64BIT__) 51 | typedef long long BLASLONG; 52 | typedef unsigned long long BLASULONG; 53 | #else 54 | typedef long BLASLONG; 55 | typedef unsigned long BLASULONG; 56 | #endif 57 | 58 | #ifdef OPENBLAS_USE64BITINT 59 | typedef BLASLONG blasint; 60 | #else 61 | typedef int blasint; 62 | #endif 63 | 64 | #if defined(XDOUBLE) || defined(DOUBLE) 65 | #define FLOATRET FLOAT 66 | #else 67 | #ifdef NEED_F2CCONV 68 | #define FLOATRET double 69 | #else 70 | #define FLOATRET float 71 | #endif 72 | #endif 73 | 74 | /* Inclusion of a standard header file is needed for definition of __STDC_* 75 | predefined macros with some compilers (e.g. GCC 4.7 on Linux). This occurs 76 | as a side effect of including either or . */ 77 | #include 78 | 79 | /* C99 supports complex floating numbers natively, which GCC also offers as an 80 | extension since version 3.0. If neither are available, use a compatible 81 | structure as fallback (see Clause 6.2.5.13 of the C99 standard). */ 82 | #if ((defined(__STDC_IEC_559_COMPLEX__) || __STDC_VERSION__ >= 199901L || \ 83 | (__GNUC__ >= 3 && !defined(__cplusplus))) && !(defined(FORCE_OPENBLAS_COMPLEX_STRUCT))) 84 | #define OPENBLAS_COMPLEX_C99 85 | #ifndef __cplusplus 86 | #include 87 | #endif 88 | typedef float _Complex openblas_complex_float; 89 | typedef double _Complex openblas_complex_double; 90 | typedef xdouble _Complex openblas_complex_xdouble; 91 | #define openblas_make_complex_float(real, imag) ((real) + ((imag) * _Complex_I)) 92 | #define openblas_make_complex_double(real, imag) ((real) + ((imag) * _Complex_I)) 93 | #define openblas_make_complex_xdouble(real, imag) ((real) + ((imag) * _Complex_I)) 94 | #define openblas_complex_float_real(z) (creal(z)) 95 | #define openblas_complex_float_imag(z) (cimag(z)) 96 | #define openblas_complex_double_real(z) (creal(z)) 97 | #define openblas_complex_double_imag(z) (cimag(z)) 98 | #define openblas_complex_xdouble_real(z) (creal(z)) 99 | #define openblas_complex_xdouble_imag(z) (cimag(z)) 100 | #else 101 | #define OPENBLAS_COMPLEX_STRUCT 102 | typedef struct { float real, imag; } openblas_complex_float; 103 | typedef struct { double real, imag; } openblas_complex_double; 104 | typedef struct { xdouble real, imag; } openblas_complex_xdouble; 105 | #define openblas_make_complex_float(real, imag) {(real), (imag)} 106 | #define openblas_make_complex_double(real, imag) {(real), (imag)} 107 | #define openblas_make_complex_xdouble(real, imag) {(real), (imag)} 108 | #define openblas_complex_float_real(z) ((z).real) 109 | #define openblas_complex_float_imag(z) ((z).imag) 110 | #define openblas_complex_double_real(z) ((z).real) 111 | #define openblas_complex_double_imag(z) ((z).imag) 112 | #define openblas_complex_xdouble_real(z) ((z).real) 113 | #define openblas_complex_xdouble_imag(z) ((z).imag) 114 | #endif 115 | #endif /* OPENBLAS_CONFIG_H */ 116 | -------------------------------------------------------------------------------- /output/x86/libopenblas.a: -------------------------------------------------------------------------------- 1 | libopenblas_atom-r0.2.20.dev.a -------------------------------------------------------------------------------- /output/x86/libopenblas_atom-r0.2.20.dev.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quickwritereader/openblasBuildForAndroid/f3c63ea37276d079ccbf33f44e8e36474756c57b/output/x86/libopenblas_atom-r0.2.20.dev.a -------------------------------------------------------------------------------- /output/x86_64/libopenblas.a: -------------------------------------------------------------------------------- 1 | libopenblas_atom-r0.2.20.dev.a -------------------------------------------------------------------------------- /output/x86_64/libopenblas_atom-r0.2.20.dev.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quickwritereader/openblasBuildForAndroid/f3c63ea37276d079ccbf33f44e8e36474756c57b/output/x86_64/libopenblas_atom-r0.2.20.dev.a -------------------------------------------------------------------------------- /output/x86_64include/lapacke_config.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | Copyright (c) 2010, Intel Corp. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | * Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | * Neither the name of Intel Corporation nor the names of its contributors 14 | may be used to endorse or promote products derived from this software 15 | without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 27 | THE POSSIBILITY OF SUCH DAMAGE. 28 | ****************************************************************************** 29 | * Contents: Native C interface to LAPACK 30 | * Author: Intel Corporation 31 | * Generated May, 2011 32 | *****************************************************************************/ 33 | 34 | #ifndef _LAPACKE_CONFIG_H_ 35 | #define _LAPACKE_CONFIG_H_ 36 | 37 | // For Android prior to API 21 (no include) 38 | #if defined(__ANDROID__) 39 | #if __ANDROID_API__ < 21 40 | #define LAPACK_COMPLEX_STRUCTURE 41 | #endif 42 | #endif 43 | 44 | #ifdef __cplusplus 45 | #if defined(LAPACK_COMPLEX_CPP) 46 | #include 47 | #endif 48 | extern "C" { 49 | #endif /* __cplusplus */ 50 | 51 | #include 52 | 53 | #ifndef lapack_int 54 | #if defined(LAPACK_ILP64) 55 | #define lapack_int long 56 | #else 57 | #define lapack_int int 58 | #endif 59 | #endif 60 | 61 | #ifndef lapack_logical 62 | #define lapack_logical lapack_int 63 | #endif 64 | 65 | #ifndef LAPACK_COMPLEX_CUSTOM 66 | 67 | #if defined(LAPACK_COMPLEX_STRUCTURE) 68 | 69 | typedef struct { float real, imag; } _lapack_complex_float; 70 | typedef struct { double real, imag; } _lapack_complex_double; 71 | #define lapack_complex_float _lapack_complex_float 72 | #define lapack_complex_double _lapack_complex_double 73 | #define lapack_complex_float_real(z) ((z).real) 74 | #define lapack_complex_float_imag(z) ((z).imag) 75 | #define lapack_complex_double_real(z) ((z).real) 76 | #define lapack_complex_double_imag(z) ((z).imag) 77 | 78 | #elif defined(LAPACK_COMPLEX_C99) 79 | 80 | #include 81 | #define lapack_complex_float float _Complex 82 | #define lapack_complex_double double _Complex 83 | #define lapack_complex_float_real(z) (creal(z)) 84 | #define lapack_complex_float_imag(z) (cimag(z)) 85 | #define lapack_complex_double_real(z) (creal(z)) 86 | #define lapack_complex_double_imag(z) (cimag(z)) 87 | 88 | #elif defined(LAPACK_COMPLEX_CPP) 89 | 90 | #define lapack_complex_float std::complex 91 | #define lapack_complex_double std::complex 92 | #define lapack_complex_float_real(z) ((z).real()) 93 | #define lapack_complex_float_imag(z) ((z).imag()) 94 | #define lapack_complex_double_real(z) ((z).real()) 95 | #define lapack_complex_double_imag(z) ((z).imag()) 96 | 97 | #else 98 | 99 | #include 100 | #define lapack_complex_float float _Complex 101 | #define lapack_complex_double double _Complex 102 | #define lapack_complex_float_real(z) (creal(z)) 103 | #define lapack_complex_float_imag(z) (cimag(z)) 104 | #define lapack_complex_double_real(z) (creal(z)) 105 | #define lapack_complex_double_imag(z) (cimag(z)) 106 | 107 | #endif 108 | 109 | lapack_complex_float lapack_make_complex_float( float re, float im ); 110 | lapack_complex_double lapack_make_complex_double( double re, double im ); 111 | 112 | #endif 113 | 114 | #ifndef LAPACK_malloc 115 | #define LAPACK_malloc( size ) malloc( size ) 116 | #endif 117 | 118 | #ifndef LAPACK_free 119 | #define LAPACK_free( p ) free( p ) 120 | #endif 121 | 122 | #ifdef __cplusplus 123 | } 124 | #endif /* __cplusplus */ 125 | 126 | #endif /* _LAPACKE_CONFIG_H_ */ 127 | -------------------------------------------------------------------------------- /output/x86_64include/lapacke_mangling.h: -------------------------------------------------------------------------------- 1 | #ifndef LAPACK_HEADER_INCLUDED 2 | #define LAPACK_HEADER_INCLUDED 3 | 4 | #ifndef LAPACK_GLOBAL 5 | #if defined(LAPACK_GLOBAL_PATTERN_LC) || defined(ADD_) 6 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname##_ 7 | #elif defined(LAPACK_GLOBAL_PATTERN_UC) || defined(UPPER) 8 | #define LAPACK_GLOBAL(lcname,UCNAME) UCNAME 9 | #elif defined(LAPACK_GLOBAL_PATTERN_MC) || defined(NOCHANGE) 10 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname 11 | #else 12 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname##_ 13 | #endif 14 | #endif 15 | 16 | #endif 17 | 18 | -------------------------------------------------------------------------------- /output/x86_64include/lapacke_utils.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | Copyright (c) 2014, Intel Corp. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | * Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | * Neither the name of Intel Corporation nor the names of its contributors 14 | may be used to endorse or promote products derived from this software 15 | without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 27 | THE POSSIBILITY OF SUCH DAMAGE. 28 | ****************************************************************************** 29 | * Contents: Native C interface to LAPACK utility functions 30 | * Author: Intel Corporation 31 | * Created in January, 2010 32 | *****************************************************************************/ 33 | 34 | #ifndef _LAPACKE_UTILS_H_ 35 | #define _LAPACKE_UTILS_H_ 36 | 37 | #include "lapacke.h" 38 | 39 | #ifdef __cplusplus 40 | extern "C" { 41 | #endif /* __cplusplus */ 42 | 43 | #ifndef ABS 44 | #define ABS(x) (((x) < 0) ? -(x) : (x)) 45 | #endif 46 | #ifndef MAX 47 | #define MAX(x,y) (((x) > (y)) ? (x) : (y)) 48 | #endif 49 | #ifndef MIN 50 | #define MIN(x,y) (((x) < (y)) ? (x) : (y)) 51 | #endif 52 | #ifndef MAX3 53 | #define MAX3(x,y,z) (((x) > MAX(y,z)) ? (x) : MAX(y,z)) 54 | #endif 55 | #ifndef MIN3 56 | #define MIN3(x,y,z) (((x) < MIN(y,z)) ? (x) : MIN(y,z)) 57 | #endif 58 | 59 | #define IS_S_NONZERO(x) ( (x) < 0 || (x) > 0 ) 60 | #define IS_D_NONZERO(x) ( (x) < 0 || (x) > 0 ) 61 | #define IS_C_NONZERO(x) ( IS_S_NONZERO(*((float*)&x)) || \ 62 | IS_S_NONZERO(*(((float*)&x)+1)) ) 63 | #define IS_Z_NONZERO(x) ( IS_D_NONZERO(*((double*)&x)) || \ 64 | IS_D_NONZERO(*(((double*)&x)+1)) ) 65 | 66 | /* Error handler */ 67 | void LAPACKE_xerbla( const char *name, lapack_int info ); 68 | 69 | /* Compare two chars (case-insensitive) */ 70 | lapack_logical LAPACKE_lsame( char ca, char cb ); 71 | 72 | /* Functions to convert column-major to row-major 2d arrays and vice versa. */ 73 | void LAPACKE_cgb_trans( int matrix_layout, lapack_int m, lapack_int n, 74 | lapack_int kl, lapack_int ku, 75 | const lapack_complex_float *in, lapack_int ldin, 76 | lapack_complex_float *out, lapack_int ldout ); 77 | void LAPACKE_cge_trans( int matrix_layout, lapack_int m, lapack_int n, 78 | const lapack_complex_float* in, lapack_int ldin, 79 | lapack_complex_float* out, lapack_int ldout ); 80 | void LAPACKE_cgg_trans( int matrix_layout, lapack_int m, lapack_int n, 81 | const lapack_complex_float* in, lapack_int ldin, 82 | lapack_complex_float* out, lapack_int ldout ); 83 | void LAPACKE_chb_trans( int matrix_layout, char uplo, lapack_int n, 84 | lapack_int kd, 85 | const lapack_complex_float *in, lapack_int ldin, 86 | lapack_complex_float *out, lapack_int ldout ); 87 | void LAPACKE_che_trans( int matrix_layout, char uplo, lapack_int n, 88 | const lapack_complex_float *in, lapack_int ldin, 89 | lapack_complex_float *out, lapack_int ldout ); 90 | void LAPACKE_chp_trans( int matrix_layout, char uplo, lapack_int n, 91 | const lapack_complex_float *in, 92 | lapack_complex_float *out ); 93 | void LAPACKE_chs_trans( int matrix_layout, lapack_int n, 94 | const lapack_complex_float *in, lapack_int ldin, 95 | lapack_complex_float *out, lapack_int ldout ); 96 | void LAPACKE_cpb_trans( int matrix_layout, char uplo, lapack_int n, 97 | lapack_int kd, 98 | const lapack_complex_float *in, lapack_int ldin, 99 | lapack_complex_float *out, lapack_int ldout ); 100 | void LAPACKE_cpf_trans( int matrix_layout, char transr, char uplo, 101 | lapack_int n, const lapack_complex_float *in, 102 | lapack_complex_float *out ); 103 | void LAPACKE_cpo_trans( int matrix_layout, char uplo, lapack_int n, 104 | const lapack_complex_float *in, lapack_int ldin, 105 | lapack_complex_float *out, lapack_int ldout ); 106 | void LAPACKE_cpp_trans( int matrix_layout, char uplo, lapack_int n, 107 | const lapack_complex_float *in, 108 | lapack_complex_float *out ); 109 | void LAPACKE_csp_trans( int matrix_layout, char uplo, lapack_int n, 110 | const lapack_complex_float *in, 111 | lapack_complex_float *out ); 112 | void LAPACKE_csy_trans( int matrix_layout, char uplo, lapack_int n, 113 | const lapack_complex_float *in, lapack_int ldin, 114 | lapack_complex_float *out, lapack_int ldout ); 115 | void LAPACKE_ctb_trans( int matrix_layout, char uplo, char diag, 116 | lapack_int n, lapack_int kd, 117 | const lapack_complex_float *in, lapack_int ldin, 118 | lapack_complex_float *out, lapack_int ldout ); 119 | void LAPACKE_ctf_trans( int matrix_layout, char transr, char uplo, char diag, 120 | lapack_int n, const lapack_complex_float *in, 121 | lapack_complex_float *out ); 122 | void LAPACKE_ctp_trans( int matrix_layout, char uplo, char diag, 123 | lapack_int n, const lapack_complex_float *in, 124 | lapack_complex_float *out ); 125 | void LAPACKE_ctr_trans( int matrix_layout, char uplo, char diag, lapack_int n, 126 | const lapack_complex_float *in, lapack_int ldin, 127 | lapack_complex_float *out, lapack_int ldout ); 128 | 129 | void LAPACKE_dgb_trans( int matrix_layout, lapack_int m, lapack_int n, 130 | lapack_int kl, lapack_int ku, 131 | const double *in, lapack_int ldin, 132 | double *out, lapack_int ldout ); 133 | void LAPACKE_dge_trans( int matrix_layout, lapack_int m, lapack_int n, 134 | const double* in, lapack_int ldin, 135 | double* out, lapack_int ldout ); 136 | void LAPACKE_dgg_trans( int matrix_layout, lapack_int m, lapack_int n, 137 | const double* in, lapack_int ldin, 138 | double* out, lapack_int ldout ); 139 | void LAPACKE_dhs_trans( int matrix_layout, lapack_int n, 140 | const double *in, lapack_int ldin, 141 | double *out, lapack_int ldout ); 142 | void LAPACKE_dpb_trans( int matrix_layout, char uplo, lapack_int n, 143 | lapack_int kd, 144 | const double *in, lapack_int ldin, 145 | double *out, lapack_int ldout ); 146 | void LAPACKE_dpf_trans( int matrix_layout, char transr, char uplo, 147 | lapack_int n, const double *in, 148 | double *out ); 149 | void LAPACKE_dpo_trans( int matrix_layout, char uplo, lapack_int n, 150 | const double *in, lapack_int ldin, 151 | double *out, lapack_int ldout ); 152 | void LAPACKE_dpp_trans( int matrix_layout, char uplo, lapack_int n, 153 | const double *in, 154 | double *out ); 155 | void LAPACKE_dsb_trans( int matrix_layout, char uplo, lapack_int n, 156 | lapack_int kd, 157 | const double *in, lapack_int ldin, 158 | double *out, lapack_int ldout ); 159 | void LAPACKE_dsp_trans( int matrix_layout, char uplo, lapack_int n, 160 | const double *in, 161 | double *out ); 162 | void LAPACKE_dsy_trans( int matrix_layout, char uplo, lapack_int n, 163 | const double *in, lapack_int ldin, 164 | double *out, lapack_int ldout ); 165 | void LAPACKE_dtb_trans( int matrix_layout, char uplo, char diag, 166 | lapack_int n, lapack_int kd, 167 | const double *in, lapack_int ldin, 168 | double *out, lapack_int ldout ); 169 | void LAPACKE_dtf_trans( int matrix_layout, char transr, char uplo, char diag, 170 | lapack_int n, const double *in, 171 | double *out ); 172 | void LAPACKE_dtp_trans( int matrix_layout, char uplo, char diag, 173 | lapack_int n, const double *in, 174 | double *out ); 175 | void LAPACKE_dtr_trans( int matrix_layout, char uplo, char diag, lapack_int n, 176 | const double *in, lapack_int ldin, 177 | double *out, lapack_int ldout ); 178 | 179 | void LAPACKE_sgb_trans( int matrix_layout, lapack_int m, lapack_int n, 180 | lapack_int kl, lapack_int ku, 181 | const float *in, lapack_int ldin, 182 | float *out, lapack_int ldout ); 183 | void LAPACKE_sge_trans( int matrix_layout, lapack_int m, lapack_int n, 184 | const float* in, lapack_int ldin, 185 | float* out, lapack_int ldout ); 186 | void LAPACKE_sgg_trans( int matrix_layout, lapack_int m, lapack_int n, 187 | const float* in, lapack_int ldin, 188 | float* out, lapack_int ldout ); 189 | void LAPACKE_shs_trans( int matrix_layout, lapack_int n, 190 | const float *in, lapack_int ldin, 191 | float *out, lapack_int ldout ); 192 | void LAPACKE_spb_trans( int matrix_layout, char uplo, lapack_int n, 193 | lapack_int kd, 194 | const float *in, lapack_int ldin, 195 | float *out, lapack_int ldout ); 196 | void LAPACKE_spf_trans( int matrix_layout, char transr, char uplo, 197 | lapack_int n, const float *in, 198 | float *out ); 199 | void LAPACKE_spo_trans( int matrix_layout, char uplo, lapack_int n, 200 | const float *in, lapack_int ldin, 201 | float *out, lapack_int ldout ); 202 | void LAPACKE_spp_trans( int matrix_layout, char uplo, lapack_int n, 203 | const float *in, 204 | float *out ); 205 | void LAPACKE_ssb_trans( int matrix_layout, char uplo, lapack_int n, 206 | lapack_int kd, 207 | const float *in, lapack_int ldin, 208 | float *out, lapack_int ldout ); 209 | void LAPACKE_ssp_trans( int matrix_layout, char uplo, lapack_int n, 210 | const float *in, 211 | float *out ); 212 | void LAPACKE_ssy_trans( int matrix_layout, char uplo, lapack_int n, 213 | const float *in, lapack_int ldin, 214 | float *out, lapack_int ldout ); 215 | void LAPACKE_stb_trans( int matrix_layout, char uplo, char diag, 216 | lapack_int n, lapack_int kd, 217 | const float *in, lapack_int ldin, 218 | float *out, lapack_int ldout ); 219 | void LAPACKE_stf_trans( int matrix_layout, char transr, char uplo, char diag, 220 | lapack_int n, const float *in, 221 | float *out ); 222 | void LAPACKE_stp_trans( int matrix_layout, char uplo, char diag, 223 | lapack_int n, const float *in, 224 | float *out ); 225 | void LAPACKE_str_trans( int matrix_layout, char uplo, char diag, lapack_int n, 226 | const float *in, lapack_int ldin, 227 | float *out, lapack_int ldout ); 228 | 229 | void LAPACKE_zgb_trans( int matrix_layout, lapack_int m, lapack_int n, 230 | lapack_int kl, lapack_int ku, 231 | const lapack_complex_double *in, lapack_int ldin, 232 | lapack_complex_double *out, lapack_int ldout ); 233 | void LAPACKE_zge_trans( int matrix_layout, lapack_int m, lapack_int n, 234 | const lapack_complex_double* in, lapack_int ldin, 235 | lapack_complex_double* out, lapack_int ldout ); 236 | void LAPACKE_zgg_trans( int matrix_layout, lapack_int m, lapack_int n, 237 | const lapack_complex_double* in, lapack_int ldin, 238 | lapack_complex_double* out, lapack_int ldout ); 239 | void LAPACKE_zhb_trans( int matrix_layout, char uplo, lapack_int n, 240 | lapack_int kd, 241 | const lapack_complex_double *in, lapack_int ldin, 242 | lapack_complex_double *out, lapack_int ldout ); 243 | void LAPACKE_zhe_trans( int matrix_layout, char uplo, lapack_int n, 244 | const lapack_complex_double *in, lapack_int ldin, 245 | lapack_complex_double *out, lapack_int ldout ); 246 | void LAPACKE_zhp_trans( int matrix_layout, char uplo, lapack_int n, 247 | const lapack_complex_double *in, 248 | lapack_complex_double *out ); 249 | void LAPACKE_zhs_trans( int matrix_layout, lapack_int n, 250 | const lapack_complex_double *in, lapack_int ldin, 251 | lapack_complex_double *out, lapack_int ldout ); 252 | void LAPACKE_zpb_trans( int matrix_layout, char uplo, lapack_int n, 253 | lapack_int kd, 254 | const lapack_complex_double *in, lapack_int ldin, 255 | lapack_complex_double *out, lapack_int ldout ); 256 | void LAPACKE_zpf_trans( int matrix_layout, char transr, char uplo, 257 | lapack_int n, const lapack_complex_double *in, 258 | lapack_complex_double *out ); 259 | void LAPACKE_zpo_trans( int matrix_layout, char uplo, lapack_int n, 260 | const lapack_complex_double *in, lapack_int ldin, 261 | lapack_complex_double *out, lapack_int ldout ); 262 | void LAPACKE_zpp_trans( int matrix_layout, char uplo, lapack_int n, 263 | const lapack_complex_double *in, 264 | lapack_complex_double *out ); 265 | void LAPACKE_zsp_trans( int matrix_layout, char uplo, lapack_int n, 266 | const lapack_complex_double *in, 267 | lapack_complex_double *out ); 268 | void LAPACKE_zsy_trans( int matrix_layout, char uplo, lapack_int n, 269 | const lapack_complex_double *in, lapack_int ldin, 270 | lapack_complex_double *out, lapack_int ldout ); 271 | void LAPACKE_ztb_trans( int matrix_layout, char uplo, char diag, 272 | lapack_int n, lapack_int kd, 273 | const lapack_complex_double *in, lapack_int ldin, 274 | lapack_complex_double *out, lapack_int ldout ); 275 | void LAPACKE_ztf_trans( int matrix_layout, char transr, char uplo, char diag, 276 | lapack_int n, const lapack_complex_double *in, 277 | lapack_complex_double *out ); 278 | void LAPACKE_ztp_trans( int matrix_layout, char uplo, char diag, 279 | lapack_int n, const lapack_complex_double *in, 280 | lapack_complex_double *out ); 281 | void LAPACKE_ztr_trans( int matrix_layout, char uplo, char diag, lapack_int n, 282 | const lapack_complex_double *in, lapack_int ldin, 283 | lapack_complex_double *out, lapack_int ldout ); 284 | 285 | /* NaN checkers */ 286 | #define LAPACK_SISNAN( x ) ( x != x ) 287 | #define LAPACK_DISNAN( x ) ( x != x ) 288 | #define LAPACK_CISNAN( x ) ( LAPACK_SISNAN(*((float*) &x)) || \ 289 | LAPACK_SISNAN(*(((float*) &x)+1)) ) 290 | #define LAPACK_ZISNAN( x ) ( LAPACK_DISNAN(*((double*)&x)) || \ 291 | LAPACK_DISNAN(*(((double*)&x)+1)) ) 292 | 293 | /* NaN checkers for vectors */ 294 | lapack_logical LAPACKE_c_nancheck( lapack_int n, 295 | const lapack_complex_float *x, 296 | lapack_int incx ); 297 | lapack_logical LAPACKE_d_nancheck( lapack_int n, 298 | const double *x, 299 | lapack_int incx ); 300 | lapack_logical LAPACKE_s_nancheck( lapack_int n, 301 | const float *x, 302 | lapack_int incx ); 303 | lapack_logical LAPACKE_z_nancheck( lapack_int n, 304 | const lapack_complex_double *x, 305 | lapack_int incx ); 306 | /* NaN checkers for matrices */ 307 | lapack_logical LAPACKE_cgb_nancheck( int matrix_layout, lapack_int m, 308 | lapack_int n, lapack_int kl, 309 | lapack_int ku, 310 | const lapack_complex_float *ab, 311 | lapack_int ldab ); 312 | lapack_logical LAPACKE_cge_nancheck( int matrix_layout, lapack_int m, 313 | lapack_int n, 314 | const lapack_complex_float *a, 315 | lapack_int lda ); 316 | lapack_logical LAPACKE_cgg_nancheck( int matrix_layout, lapack_int m, 317 | lapack_int n, 318 | const lapack_complex_float *a, 319 | lapack_int lda ); 320 | lapack_logical LAPACKE_cgt_nancheck( lapack_int n, 321 | const lapack_complex_float *dl, 322 | const lapack_complex_float *d, 323 | const lapack_complex_float *du ); 324 | lapack_logical LAPACKE_chb_nancheck( int matrix_layout, char uplo, 325 | lapack_int n, lapack_int kd, 326 | const lapack_complex_float* ab, 327 | lapack_int ldab ); 328 | lapack_logical LAPACKE_che_nancheck( int matrix_layout, char uplo, 329 | lapack_int n, 330 | const lapack_complex_float *a, 331 | lapack_int lda ); 332 | lapack_logical LAPACKE_chp_nancheck( lapack_int n, 333 | const lapack_complex_float *ap ); 334 | lapack_logical LAPACKE_chs_nancheck( int matrix_layout, lapack_int n, 335 | const lapack_complex_float *a, 336 | lapack_int lda ); 337 | lapack_logical LAPACKE_cpb_nancheck( int matrix_layout, char uplo, 338 | lapack_int n, lapack_int kd, 339 | const lapack_complex_float* ab, 340 | lapack_int ldab ); 341 | lapack_logical LAPACKE_cpf_nancheck( lapack_int n, 342 | const lapack_complex_float *a ); 343 | lapack_logical LAPACKE_cpo_nancheck( int matrix_layout, char uplo, 344 | lapack_int n, 345 | const lapack_complex_float *a, 346 | lapack_int lda ); 347 | lapack_logical LAPACKE_cpp_nancheck( lapack_int n, 348 | const lapack_complex_float *ap ); 349 | lapack_logical LAPACKE_cpt_nancheck( lapack_int n, 350 | const float *d, 351 | const lapack_complex_float *e ); 352 | lapack_logical LAPACKE_csp_nancheck( lapack_int n, 353 | const lapack_complex_float *ap ); 354 | lapack_logical LAPACKE_cst_nancheck( lapack_int n, 355 | const lapack_complex_float *d, 356 | const lapack_complex_float *e ); 357 | lapack_logical LAPACKE_csy_nancheck( int matrix_layout, char uplo, 358 | lapack_int n, 359 | const lapack_complex_float *a, 360 | lapack_int lda ); 361 | lapack_logical LAPACKE_ctb_nancheck( int matrix_layout, char uplo, char diag, 362 | lapack_int n, lapack_int kd, 363 | const lapack_complex_float* ab, 364 | lapack_int ldab ); 365 | lapack_logical LAPACKE_ctf_nancheck( int matrix_layout, char transr, 366 | char uplo, char diag, 367 | lapack_int n, 368 | const lapack_complex_float *a ); 369 | lapack_logical LAPACKE_ctp_nancheck( int matrix_layout, char uplo, char diag, 370 | lapack_int n, 371 | const lapack_complex_float *ap ); 372 | lapack_logical LAPACKE_ctr_nancheck( int matrix_layout, char uplo, char diag, 373 | lapack_int n, 374 | const lapack_complex_float *a, 375 | lapack_int lda ); 376 | 377 | lapack_logical LAPACKE_dgb_nancheck( int matrix_layout, lapack_int m, 378 | lapack_int n, lapack_int kl, 379 | lapack_int ku, 380 | const double *ab, 381 | lapack_int ldab ); 382 | lapack_logical LAPACKE_dge_nancheck( int matrix_layout, lapack_int m, 383 | lapack_int n, 384 | const double *a, 385 | lapack_int lda ); 386 | lapack_logical LAPACKE_dgg_nancheck( int matrix_layout, lapack_int m, 387 | lapack_int n, 388 | const double *a, 389 | lapack_int lda ); 390 | lapack_logical LAPACKE_dgt_nancheck( lapack_int n, 391 | const double *dl, 392 | const double *d, 393 | const double *du ); 394 | lapack_logical LAPACKE_dhs_nancheck( int matrix_layout, lapack_int n, 395 | const double *a, 396 | lapack_int lda ); 397 | lapack_logical LAPACKE_dpb_nancheck( int matrix_layout, char uplo, 398 | lapack_int n, lapack_int kd, 399 | const double* ab, 400 | lapack_int ldab ); 401 | lapack_logical LAPACKE_dpf_nancheck( lapack_int n, 402 | const double *a ); 403 | lapack_logical LAPACKE_dpo_nancheck( int matrix_layout, char uplo, 404 | lapack_int n, 405 | const double *a, 406 | lapack_int lda ); 407 | lapack_logical LAPACKE_dpp_nancheck( lapack_int n, 408 | const double *ap ); 409 | lapack_logical LAPACKE_dpt_nancheck( lapack_int n, 410 | const double *d, 411 | const double *e ); 412 | lapack_logical LAPACKE_dsb_nancheck( int matrix_layout, char uplo, 413 | lapack_int n, lapack_int kd, 414 | const double* ab, 415 | lapack_int ldab ); 416 | lapack_logical LAPACKE_dsp_nancheck( lapack_int n, 417 | const double *ap ); 418 | lapack_logical LAPACKE_dst_nancheck( lapack_int n, 419 | const double *d, 420 | const double *e ); 421 | lapack_logical LAPACKE_dsy_nancheck( int matrix_layout, char uplo, 422 | lapack_int n, 423 | const double *a, 424 | lapack_int lda ); 425 | lapack_logical LAPACKE_dtb_nancheck( int matrix_layout, char uplo, char diag, 426 | lapack_int n, lapack_int kd, 427 | const double* ab, 428 | lapack_int ldab ); 429 | lapack_logical LAPACKE_dtf_nancheck( int matrix_layout, char transr, 430 | char uplo, char diag, 431 | lapack_int n, 432 | const double *a ); 433 | lapack_logical LAPACKE_dtp_nancheck( int matrix_layout, char uplo, char diag, 434 | lapack_int n, 435 | const double *ap ); 436 | lapack_logical LAPACKE_dtr_nancheck( int matrix_layout, char uplo, char diag, 437 | lapack_int n, 438 | const double *a, 439 | lapack_int lda ); 440 | 441 | lapack_logical LAPACKE_sgb_nancheck( int matrix_layout, lapack_int m, 442 | lapack_int n, lapack_int kl, 443 | lapack_int ku, 444 | const float *ab, 445 | lapack_int ldab ); 446 | lapack_logical LAPACKE_sge_nancheck( int matrix_layout, lapack_int m, 447 | lapack_int n, 448 | const float *a, 449 | lapack_int lda ); 450 | lapack_logical LAPACKE_sgg_nancheck( int matrix_layout, lapack_int m, 451 | lapack_int n, 452 | const float *a, 453 | lapack_int lda ); 454 | lapack_logical LAPACKE_sgt_nancheck( lapack_int n, 455 | const float *dl, 456 | const float *d, 457 | const float *du ); 458 | lapack_logical LAPACKE_shs_nancheck( int matrix_layout, lapack_int n, 459 | const float *a, 460 | lapack_int lda ); 461 | lapack_logical LAPACKE_spb_nancheck( int matrix_layout, char uplo, 462 | lapack_int n, lapack_int kd, 463 | const float* ab, 464 | lapack_int ldab ); 465 | lapack_logical LAPACKE_spf_nancheck( lapack_int n, 466 | const float *a ); 467 | lapack_logical LAPACKE_spo_nancheck( int matrix_layout, char uplo, 468 | lapack_int n, 469 | const float *a, 470 | lapack_int lda ); 471 | lapack_logical LAPACKE_spp_nancheck( lapack_int n, 472 | const float *ap ); 473 | lapack_logical LAPACKE_spt_nancheck( lapack_int n, 474 | const float *d, 475 | const float *e ); 476 | lapack_logical LAPACKE_ssb_nancheck( int matrix_layout, char uplo, 477 | lapack_int n, lapack_int kd, 478 | const float* ab, 479 | lapack_int ldab ); 480 | lapack_logical LAPACKE_ssp_nancheck( lapack_int n, 481 | const float *ap ); 482 | lapack_logical LAPACKE_sst_nancheck( lapack_int n, 483 | const float *d, 484 | const float *e ); 485 | lapack_logical LAPACKE_ssy_nancheck( int matrix_layout, char uplo, 486 | lapack_int n, 487 | const float *a, 488 | lapack_int lda ); 489 | lapack_logical LAPACKE_stb_nancheck( int matrix_layout, char uplo, char diag, 490 | lapack_int n, lapack_int kd, 491 | const float* ab, 492 | lapack_int ldab ); 493 | lapack_logical LAPACKE_stf_nancheck( int matrix_layout, char transr, 494 | char uplo, char diag, 495 | lapack_int n, 496 | const float *a ); 497 | lapack_logical LAPACKE_stp_nancheck( int matrix_layout, char uplo, char diag, 498 | lapack_int n, 499 | const float *ap ); 500 | lapack_logical LAPACKE_str_nancheck( int matrix_layout, char uplo, char diag, 501 | lapack_int n, 502 | const float *a, 503 | lapack_int lda ); 504 | 505 | lapack_logical LAPACKE_zgb_nancheck( int matrix_layout, lapack_int m, 506 | lapack_int n, lapack_int kl, 507 | lapack_int ku, 508 | const lapack_complex_double *ab, 509 | lapack_int ldab ); 510 | lapack_logical LAPACKE_zge_nancheck( int matrix_layout, lapack_int m, 511 | lapack_int n, 512 | const lapack_complex_double *a, 513 | lapack_int lda ); 514 | lapack_logical LAPACKE_zgg_nancheck( int matrix_layout, lapack_int m, 515 | lapack_int n, 516 | const lapack_complex_double *a, 517 | lapack_int lda ); 518 | lapack_logical LAPACKE_zgt_nancheck( lapack_int n, 519 | const lapack_complex_double *dl, 520 | const lapack_complex_double *d, 521 | const lapack_complex_double *du ); 522 | lapack_logical LAPACKE_zhb_nancheck( int matrix_layout, char uplo, 523 | lapack_int n, lapack_int kd, 524 | const lapack_complex_double* ab, 525 | lapack_int ldab ); 526 | lapack_logical LAPACKE_zhe_nancheck( int matrix_layout, char uplo, 527 | lapack_int n, 528 | const lapack_complex_double *a, 529 | lapack_int lda ); 530 | lapack_logical LAPACKE_zhp_nancheck( lapack_int n, 531 | const lapack_complex_double *ap ); 532 | lapack_logical LAPACKE_zhs_nancheck( int matrix_layout, lapack_int n, 533 | const lapack_complex_double *a, 534 | lapack_int lda ); 535 | lapack_logical LAPACKE_zpb_nancheck( int matrix_layout, char uplo, 536 | lapack_int n, lapack_int kd, 537 | const lapack_complex_double* ab, 538 | lapack_int ldab ); 539 | lapack_logical LAPACKE_zpf_nancheck( lapack_int n, 540 | const lapack_complex_double *a ); 541 | lapack_logical LAPACKE_zpo_nancheck( int matrix_layout, char uplo, 542 | lapack_int n, 543 | const lapack_complex_double *a, 544 | lapack_int lda ); 545 | lapack_logical LAPACKE_zpp_nancheck( lapack_int n, 546 | const lapack_complex_double *ap ); 547 | lapack_logical LAPACKE_zpt_nancheck( lapack_int n, 548 | const double *d, 549 | const lapack_complex_double *e ); 550 | lapack_logical LAPACKE_zsp_nancheck( lapack_int n, 551 | const lapack_complex_double *ap ); 552 | lapack_logical LAPACKE_zst_nancheck( lapack_int n, 553 | const lapack_complex_double *d, 554 | const lapack_complex_double *e ); 555 | lapack_logical LAPACKE_zsy_nancheck( int matrix_layout, char uplo, 556 | lapack_int n, 557 | const lapack_complex_double *a, 558 | lapack_int lda ); 559 | lapack_logical LAPACKE_ztb_nancheck( int matrix_layout, char uplo, char diag, 560 | lapack_int n, lapack_int kd, 561 | const lapack_complex_double* ab, 562 | lapack_int ldab ); 563 | lapack_logical LAPACKE_ztf_nancheck( int matrix_layout, char transr, 564 | char uplo, char diag, 565 | lapack_int n, 566 | const lapack_complex_double *a ); 567 | lapack_logical LAPACKE_ztp_nancheck( int matrix_layout, char uplo, char diag, 568 | lapack_int n, 569 | const lapack_complex_double *ap ); 570 | lapack_logical LAPACKE_ztr_nancheck( int matrix_layout, char uplo, char diag, 571 | lapack_int n, 572 | const lapack_complex_double *a, 573 | lapack_int lda ); 574 | 575 | #ifdef __cplusplus 576 | } 577 | #endif /* __cplusplus */ 578 | 579 | #endif /* _LAPACKE_UTILS_H_ */ 580 | -------------------------------------------------------------------------------- /output/x86_64include/openblas_config.h: -------------------------------------------------------------------------------- 1 | #ifndef OPENBLAS_CONFIG_H 2 | #define OPENBLAS_CONFIG_H 3 | #define OPENBLAS_OS_ANDROID 1 4 | #define OPENBLAS_ARCH_X86_64 1 5 | #define OPENBLAS_C_GCC 1 6 | #define OPENBLAS___64BIT__ 1 7 | #define OPENBLAS_PTHREAD_CREATE_FUNC pthread_create 8 | #define OPENBLAS_BUNDERSCORE _ 9 | #define OPENBLAS_NEEDBUNDERSCORE 1 10 | #define OPENBLAS_ATOM 11 | #define OPENBLAS_L1_DATA_SIZE 24576 12 | #define OPENBLAS_L1_DATA_LINESIZE 64 13 | #define OPENBLAS_L2_SIZE 524288 14 | #define OPENBLAS_L2_LINESIZE 64 15 | #define OPENBLAS_DTB_DEFAULT_ENTRIES 64 16 | #define OPENBLAS_DTB_SIZE 4096 17 | #define OPENBLAS_L2_ASSOCIATIVE 4 18 | #define OPENBLAS_HAVE_CMOV 19 | #define OPENBLAS_HAVE_MMX 20 | #define OPENBLAS_HAVE_SSE 21 | #define OPENBLAS_HAVE_SSE2 22 | #define OPENBLAS_HAVE_SSE3 23 | #define OPENBLAS_HAVE_SSSE3 24 | #define OPENBLAS_CORE_ATOM 25 | #define OPENBLAS_CHAR_CORENAME "ATOM" 26 | #define OPENBLAS_SLOCAL_BUFFER_SIZE 16384 27 | #define OPENBLAS_DLOCAL_BUFFER_SIZE 8192 28 | #define OPENBLAS_CLOCAL_BUFFER_SIZE 16384 29 | #define OPENBLAS_ZLOCAL_BUFFER_SIZE 8192 30 | #define OPENBLAS_GEMM_MULTITHREAD_THRESHOLD 4 31 | #define OPENBLAS_EXPRECISION 32 | #define OPENBLAS_VERSION " OpenBLAS 0.2.20.dev " 33 | /*This is only for "make install" target.*/ 34 | 35 | #if defined(OPENBLAS_OS_WINNT) || defined(OPENBLAS_OS_CYGWIN_NT) || defined(OPENBLAS_OS_INTERIX) 36 | #define OPENBLAS_WINDOWS_ABI 37 | #define OPENBLAS_OS_WINDOWS 38 | 39 | #ifdef DOUBLE 40 | #define DOUBLE_DEFINED DOUBLE 41 | #undef DOUBLE 42 | #endif 43 | #endif 44 | 45 | #ifdef OPENBLAS_NEEDBUNDERSCORE 46 | #define BLASFUNC(FUNC) FUNC##_ 47 | #else 48 | #define BLASFUNC(FUNC) FUNC 49 | #endif 50 | 51 | #ifdef OPENBLAS_QUAD_PRECISION 52 | typedef struct { 53 | unsigned long x[2]; 54 | } xdouble; 55 | #elif defined OPENBLAS_EXPRECISION 56 | #define xdouble long double 57 | #else 58 | #define xdouble double 59 | #endif 60 | 61 | #if defined(OPENBLAS_OS_WINDOWS) && defined(OPENBLAS___64BIT__) 62 | typedef long long BLASLONG; 63 | typedef unsigned long long BLASULONG; 64 | #else 65 | typedef long BLASLONG; 66 | typedef unsigned long BLASULONG; 67 | #endif 68 | 69 | #ifdef OPENBLAS_USE64BITINT 70 | typedef BLASLONG blasint; 71 | #else 72 | typedef int blasint; 73 | #endif 74 | 75 | #if defined(XDOUBLE) || defined(DOUBLE) 76 | #define FLOATRET FLOAT 77 | #else 78 | #ifdef NEED_F2CCONV 79 | #define FLOATRET double 80 | #else 81 | #define FLOATRET float 82 | #endif 83 | #endif 84 | 85 | /* Inclusion of a standard header file is needed for definition of __STDC_* 86 | predefined macros with some compilers (e.g. GCC 4.7 on Linux). This occurs 87 | as a side effect of including either or . */ 88 | #include 89 | 90 | /* C99 supports complex floating numbers natively, which GCC also offers as an 91 | extension since version 3.0. If neither are available, use a compatible 92 | structure as fallback (see Clause 6.2.5.13 of the C99 standard). */ 93 | #if ((defined(__STDC_IEC_559_COMPLEX__) || __STDC_VERSION__ >= 199901L || \ 94 | (__GNUC__ >= 3 && !defined(__cplusplus))) && !(defined(FORCE_OPENBLAS_COMPLEX_STRUCT))) 95 | #define OPENBLAS_COMPLEX_C99 96 | #ifndef __cplusplus 97 | #include 98 | #endif 99 | typedef float _Complex openblas_complex_float; 100 | typedef double _Complex openblas_complex_double; 101 | typedef xdouble _Complex openblas_complex_xdouble; 102 | #define openblas_make_complex_float(real, imag) ((real) + ((imag) * _Complex_I)) 103 | #define openblas_make_complex_double(real, imag) ((real) + ((imag) * _Complex_I)) 104 | #define openblas_make_complex_xdouble(real, imag) ((real) + ((imag) * _Complex_I)) 105 | #define openblas_complex_float_real(z) (creal(z)) 106 | #define openblas_complex_float_imag(z) (cimag(z)) 107 | #define openblas_complex_double_real(z) (creal(z)) 108 | #define openblas_complex_double_imag(z) (cimag(z)) 109 | #define openblas_complex_xdouble_real(z) (creal(z)) 110 | #define openblas_complex_xdouble_imag(z) (cimag(z)) 111 | #else 112 | #define OPENBLAS_COMPLEX_STRUCT 113 | typedef struct { float real, imag; } openblas_complex_float; 114 | typedef struct { double real, imag; } openblas_complex_double; 115 | typedef struct { xdouble real, imag; } openblas_complex_xdouble; 116 | #define openblas_make_complex_float(real, imag) {(real), (imag)} 117 | #define openblas_make_complex_double(real, imag) {(real), (imag)} 118 | #define openblas_make_complex_xdouble(real, imag) {(real), (imag)} 119 | #define openblas_complex_float_real(z) ((z).real) 120 | #define openblas_complex_float_imag(z) ((z).imag) 121 | #define openblas_complex_double_real(z) ((z).real) 122 | #define openblas_complex_double_imag(z) ((z).imag) 123 | #define openblas_complex_xdouble_real(z) ((z).real) 124 | #define openblas_complex_xdouble_imag(z) ((z).imag) 125 | #endif 126 | #endif /* OPENBLAS_CONFIG_H */ 127 | -------------------------------------------------------------------------------- /output/x86include/lapacke_config.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | Copyright (c) 2010, Intel Corp. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | * Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | * Neither the name of Intel Corporation nor the names of its contributors 14 | may be used to endorse or promote products derived from this software 15 | without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 27 | THE POSSIBILITY OF SUCH DAMAGE. 28 | ****************************************************************************** 29 | * Contents: Native C interface to LAPACK 30 | * Author: Intel Corporation 31 | * Generated May, 2011 32 | *****************************************************************************/ 33 | 34 | #ifndef _LAPACKE_CONFIG_H_ 35 | #define _LAPACKE_CONFIG_H_ 36 | 37 | // For Android prior to API 21 (no include) 38 | #if defined(__ANDROID__) 39 | #if __ANDROID_API__ < 21 40 | #define LAPACK_COMPLEX_STRUCTURE 41 | #endif 42 | #endif 43 | 44 | #ifdef __cplusplus 45 | #if defined(LAPACK_COMPLEX_CPP) 46 | #include 47 | #endif 48 | extern "C" { 49 | #endif /* __cplusplus */ 50 | 51 | #include 52 | 53 | #ifndef lapack_int 54 | #if defined(LAPACK_ILP64) 55 | #define lapack_int long 56 | #else 57 | #define lapack_int int 58 | #endif 59 | #endif 60 | 61 | #ifndef lapack_logical 62 | #define lapack_logical lapack_int 63 | #endif 64 | 65 | #ifndef LAPACK_COMPLEX_CUSTOM 66 | 67 | #if defined(LAPACK_COMPLEX_STRUCTURE) 68 | 69 | typedef struct { float real, imag; } _lapack_complex_float; 70 | typedef struct { double real, imag; } _lapack_complex_double; 71 | #define lapack_complex_float _lapack_complex_float 72 | #define lapack_complex_double _lapack_complex_double 73 | #define lapack_complex_float_real(z) ((z).real) 74 | #define lapack_complex_float_imag(z) ((z).imag) 75 | #define lapack_complex_double_real(z) ((z).real) 76 | #define lapack_complex_double_imag(z) ((z).imag) 77 | 78 | #elif defined(LAPACK_COMPLEX_C99) 79 | 80 | #include 81 | #define lapack_complex_float float _Complex 82 | #define lapack_complex_double double _Complex 83 | #define lapack_complex_float_real(z) (creal(z)) 84 | #define lapack_complex_float_imag(z) (cimag(z)) 85 | #define lapack_complex_double_real(z) (creal(z)) 86 | #define lapack_complex_double_imag(z) (cimag(z)) 87 | 88 | #elif defined(LAPACK_COMPLEX_CPP) 89 | 90 | #define lapack_complex_float std::complex 91 | #define lapack_complex_double std::complex 92 | #define lapack_complex_float_real(z) ((z).real()) 93 | #define lapack_complex_float_imag(z) ((z).imag()) 94 | #define lapack_complex_double_real(z) ((z).real()) 95 | #define lapack_complex_double_imag(z) ((z).imag()) 96 | 97 | #else 98 | 99 | #include 100 | #define lapack_complex_float float _Complex 101 | #define lapack_complex_double double _Complex 102 | #define lapack_complex_float_real(z) (creal(z)) 103 | #define lapack_complex_float_imag(z) (cimag(z)) 104 | #define lapack_complex_double_real(z) (creal(z)) 105 | #define lapack_complex_double_imag(z) (cimag(z)) 106 | 107 | #endif 108 | 109 | lapack_complex_float lapack_make_complex_float( float re, float im ); 110 | lapack_complex_double lapack_make_complex_double( double re, double im ); 111 | 112 | #endif 113 | 114 | #ifndef LAPACK_malloc 115 | #define LAPACK_malloc( size ) malloc( size ) 116 | #endif 117 | 118 | #ifndef LAPACK_free 119 | #define LAPACK_free( p ) free( p ) 120 | #endif 121 | 122 | #ifdef __cplusplus 123 | } 124 | #endif /* __cplusplus */ 125 | 126 | #endif /* _LAPACKE_CONFIG_H_ */ 127 | -------------------------------------------------------------------------------- /output/x86include/lapacke_mangling.h: -------------------------------------------------------------------------------- 1 | #ifndef LAPACK_HEADER_INCLUDED 2 | #define LAPACK_HEADER_INCLUDED 3 | 4 | #ifndef LAPACK_GLOBAL 5 | #if defined(LAPACK_GLOBAL_PATTERN_LC) || defined(ADD_) 6 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname##_ 7 | #elif defined(LAPACK_GLOBAL_PATTERN_UC) || defined(UPPER) 8 | #define LAPACK_GLOBAL(lcname,UCNAME) UCNAME 9 | #elif defined(LAPACK_GLOBAL_PATTERN_MC) || defined(NOCHANGE) 10 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname 11 | #else 12 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname##_ 13 | #endif 14 | #endif 15 | 16 | #endif 17 | 18 | -------------------------------------------------------------------------------- /output/x86include/openblas_config.h: -------------------------------------------------------------------------------- 1 | #ifndef OPENBLAS_CONFIG_H 2 | #define OPENBLAS_CONFIG_H 3 | #define OPENBLAS_OS_ANDROID 1 4 | #define OPENBLAS_ARCH_X86 1 5 | #define OPENBLAS_C_GCC 1 6 | #define OPENBLAS___32BIT__ 1 7 | #define OPENBLAS_PTHREAD_CREATE_FUNC pthread_create 8 | #define OPENBLAS_BUNDERSCORE _ 9 | #define OPENBLAS_NEEDBUNDERSCORE 1 10 | #define OPENBLAS_ATOM 11 | #define OPENBLAS_L1_DATA_SIZE 24576 12 | #define OPENBLAS_L1_DATA_LINESIZE 64 13 | #define OPENBLAS_L2_SIZE 524288 14 | #define OPENBLAS_L2_LINESIZE 64 15 | #define OPENBLAS_DTB_DEFAULT_ENTRIES 64 16 | #define OPENBLAS_DTB_SIZE 4096 17 | #define OPENBLAS_L2_ASSOCIATIVE 4 18 | #define OPENBLAS_HAVE_CMOV 19 | #define OPENBLAS_HAVE_MMX 20 | #define OPENBLAS_HAVE_SSE 21 | #define OPENBLAS_HAVE_SSE2 22 | #define OPENBLAS_HAVE_SSE3 23 | #define OPENBLAS_HAVE_SSSE3 24 | #define OPENBLAS_CORE_ATOM 25 | #define OPENBLAS_CHAR_CORENAME "ATOM" 26 | #define OPENBLAS_SLOCAL_BUFFER_SIZE 16384 27 | #define OPENBLAS_DLOCAL_BUFFER_SIZE 8192 28 | #define OPENBLAS_CLOCAL_BUFFER_SIZE 16384 29 | #define OPENBLAS_ZLOCAL_BUFFER_SIZE 8192 30 | #define OPENBLAS_GEMM_MULTITHREAD_THRESHOLD 4 31 | #define OPENBLAS_EXPRECISION 32 | #define OPENBLAS_VERSION " OpenBLAS 0.2.20.dev " 33 | /*This is only for "make install" target.*/ 34 | 35 | #if defined(OPENBLAS_OS_WINNT) || defined(OPENBLAS_OS_CYGWIN_NT) || defined(OPENBLAS_OS_INTERIX) 36 | #define OPENBLAS_WINDOWS_ABI 37 | #define OPENBLAS_OS_WINDOWS 38 | 39 | #ifdef DOUBLE 40 | #define DOUBLE_DEFINED DOUBLE 41 | #undef DOUBLE 42 | #endif 43 | #endif 44 | 45 | #ifdef OPENBLAS_NEEDBUNDERSCORE 46 | #define BLASFUNC(FUNC) FUNC##_ 47 | #else 48 | #define BLASFUNC(FUNC) FUNC 49 | #endif 50 | 51 | #ifdef OPENBLAS_QUAD_PRECISION 52 | typedef struct { 53 | unsigned long x[2]; 54 | } xdouble; 55 | #elif defined OPENBLAS_EXPRECISION 56 | #define xdouble long double 57 | #else 58 | #define xdouble double 59 | #endif 60 | 61 | #if defined(OPENBLAS_OS_WINDOWS) && defined(OPENBLAS___64BIT__) 62 | typedef long long BLASLONG; 63 | typedef unsigned long long BLASULONG; 64 | #else 65 | typedef long BLASLONG; 66 | typedef unsigned long BLASULONG; 67 | #endif 68 | 69 | #ifdef OPENBLAS_USE64BITINT 70 | typedef BLASLONG blasint; 71 | #else 72 | typedef int blasint; 73 | #endif 74 | 75 | #if defined(XDOUBLE) || defined(DOUBLE) 76 | #define FLOATRET FLOAT 77 | #else 78 | #ifdef NEED_F2CCONV 79 | #define FLOATRET double 80 | #else 81 | #define FLOATRET float 82 | #endif 83 | #endif 84 | 85 | /* Inclusion of a standard header file is needed for definition of __STDC_* 86 | predefined macros with some compilers (e.g. GCC 4.7 on Linux). This occurs 87 | as a side effect of including either or . */ 88 | #include 89 | 90 | /* C99 supports complex floating numbers natively, which GCC also offers as an 91 | extension since version 3.0. If neither are available, use a compatible 92 | structure as fallback (see Clause 6.2.5.13 of the C99 standard). */ 93 | #if ((defined(__STDC_IEC_559_COMPLEX__) || __STDC_VERSION__ >= 199901L || \ 94 | (__GNUC__ >= 3 && !defined(__cplusplus))) && !(defined(FORCE_OPENBLAS_COMPLEX_STRUCT))) 95 | #define OPENBLAS_COMPLEX_C99 96 | #ifndef __cplusplus 97 | #include 98 | #endif 99 | typedef float _Complex openblas_complex_float; 100 | typedef double _Complex openblas_complex_double; 101 | typedef xdouble _Complex openblas_complex_xdouble; 102 | #define openblas_make_complex_float(real, imag) ((real) + ((imag) * _Complex_I)) 103 | #define openblas_make_complex_double(real, imag) ((real) + ((imag) * _Complex_I)) 104 | #define openblas_make_complex_xdouble(real, imag) ((real) + ((imag) * _Complex_I)) 105 | #define openblas_complex_float_real(z) (creal(z)) 106 | #define openblas_complex_float_imag(z) (cimag(z)) 107 | #define openblas_complex_double_real(z) (creal(z)) 108 | #define openblas_complex_double_imag(z) (cimag(z)) 109 | #define openblas_complex_xdouble_real(z) (creal(z)) 110 | #define openblas_complex_xdouble_imag(z) (cimag(z)) 111 | #else 112 | #define OPENBLAS_COMPLEX_STRUCT 113 | typedef struct { float real, imag; } openblas_complex_float; 114 | typedef struct { double real, imag; } openblas_complex_double; 115 | typedef struct { xdouble real, imag; } openblas_complex_xdouble; 116 | #define openblas_make_complex_float(real, imag) {(real), (imag)} 117 | #define openblas_make_complex_double(real, imag) {(real), (imag)} 118 | #define openblas_make_complex_xdouble(real, imag) {(real), (imag)} 119 | #define openblas_complex_float_real(z) ((z).real) 120 | #define openblas_complex_float_imag(z) ((z).imag) 121 | #define openblas_complex_double_real(z) ((z).real) 122 | #define openblas_complex_double_imag(z) ((z).imag) 123 | #define openblas_complex_xdouble_real(z) ((z).real) 124 | #define openblas_complex_xdouble_imag(z) ((z).imag) 125 | #endif 126 | #endif /* OPENBLAS_CONFIG_H */ 127 | -------------------------------------------------------------------------------- /test/MMultOpenBlas.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | 6 | void MY_MMult( int m, int n, int k, double *a, int lda, 7 | double *b, int ldb, 8 | double *c, int ldc ) 9 | { 10 | 11 | cblas_dgemm(CblasColMajor,CblasNoTrans, CblasNoTrans, m, n , k, 12 | 1.0, a , lda , b , ldb , 1.0, c , ldc); 13 | } 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /test/REF_MMult.c: -------------------------------------------------------------------------------- 1 | /* Create macros so that the matrices are stored in column-major order */ 2 | 3 | #define A(i,j) a[ (j)*lda + (i) ] 4 | #define B(i,j) b[ (j)*ldb + (i) ] 5 | #define C(i,j) c[ (j)*ldc + (i) ] 6 | 7 | /* Routine for computing C = A * B + C */ 8 | 9 | void REF_MMult( int m, int n, int k, double *a, int lda, 10 | double *b, int ldb, 11 | double *c, int ldc ) 12 | { 13 | int i, j, p; 14 | 15 | for ( i=0; i max_diff ? diff : max_diff ); 14 | } 15 | 16 | return max_diff; 17 | } 18 | 19 | -------------------------------------------------------------------------------- /test/copy_matrix.c: -------------------------------------------------------------------------------- 1 | #define A( i, j ) a[ (j)*lda + (i) ] 2 | #define B( i, j ) b[ (j)*ldb + (i) ] 3 | 4 | void copy_matrix( int m, int n, double *a, int lda, double *b, int ldb ) 5 | { 6 | int i, j; 7 | 8 | for ( j=0; j 2 | #include 3 | 4 | static double gtod_ref_time_sec = 0.0; 5 | 6 | /* Adapted from the bl2_clock() routine in the BLIS library */ 7 | 8 | double dclock() 9 | { 10 | double the_time, norm_sec; 11 | struct timeval tv; 12 | 13 | gettimeofday( &tv, NULL ); 14 | 15 | if ( gtod_ref_time_sec == 0.0 ) 16 | gtod_ref_time_sec = ( double ) tv.tv_sec; 17 | 18 | norm_sec = ( double ) tv.tv_sec - gtod_ref_time_sec; 19 | 20 | the_time = norm_sec + tv.tv_usec * 1.0e-6; 21 | 22 | return the_time; 23 | } 24 | 25 | -------------------------------------------------------------------------------- /test/jni/Android.mk: -------------------------------------------------------------------------------- 1 | LOCAL_PATH := $(call my-dir) 2 | include $(CLEAR_VARS) 3 | LOCAL_MODULE := openblas 4 | 5 | ifeq ($(TARGET_ARCH_ABI),armeabi-v7a-hard) 6 | LOCAL_SRC_FILES := \ 7 | ../../output/armv7a/libopenblas.a 8 | else 9 | LOCAL_SRC_FILES := \ 10 | ../../output/$(TARGET_ARCH_ABI)/libopenblas.a 11 | endif 12 | 13 | include $(PREBUILT_STATIC_LIBRARY) 14 | ################################################################################ 15 | 16 | #nlibs Library 17 | include $(CLEAR_VARS) 18 | LOCAL_MODULE := testblas.x 19 | 20 | LOCAL_SRC_FILES := ../test_MMult.c 21 | LOCAL_SRC_FILES += ../MMultOpenBlas.c 22 | LOCAL_SRC_FILES += ../random_matrix.c 23 | LOCAL_SRC_FILES += ../copy_matrix.c 24 | LOCAL_SRC_FILES += ../compare_matrices.c 25 | LOCAL_SRC_FILES += ../dclock.c 26 | LOCAL_SRC_FILES += ../print_matrix.c 27 | LOCAL_SRC_FILES += ../REF_MMult.c 28 | LOCAL_STATIC_LIBRARIES := openblas 29 | COMMON_CFLAGS := -w -DFORCE_OPENBLAS_COMPLEX_STRUCT 30 | 31 | 32 | LOCAL_CFLAGS += $(COMMON_CFLAGS) 33 | LOCAL_LDLIBS := -llog -landroid -latomic 34 | LOCAL_C_INCLUDES += \ 35 | $(NDK_PATH)/platforms/$(TARGET_PLATFORM)/arch-$(TARGET_ARCH)/usr/include \ 36 | $(LOCAL_PATH)/.. 37 | 38 | ifeq ($(TARGET_ARCH_ABI),armeabi-v7a-hard) 39 | LOCAL_C_INCLUDES := \ 40 | $(LOCAL_PATH)/../../output/armv7ainclude \ 41 | else 42 | LOCAL_C_INCLUDES := \ 43 | $(LOCAL_PATH)/../../output/$(TARGET_ARCH_ABI)include \ 44 | endif 45 | 46 | include $(BUILD_EXECUTABLE) 47 | 48 | ################################################################################ 49 | -------------------------------------------------------------------------------- /test/jni/Android.mk~: -------------------------------------------------------------------------------- 1 | LOCAL_PATH := $(call my-dir) 2 | include $(CLEAR_VARS) 3 | LOCAL_ARM_MODE := arm 4 | LOCAL_MODULE := openblas 5 | LOCAL_SRC_FILES := \ 6 | ../jniLibs/$(TARGET_ARCH_ABI)/libopenblas.a 7 | include $(PREBUILT_STATIC_LIBRARY) 8 | ################################################################################ 9 | 10 | #nlibs Library 11 | include $(CLEAR_VARS) 12 | LOCAL_MODULE := qwr_nn.out 13 | LOCAL_SRC_FILES := ../main.cpp 14 | LOCAL_SRC_FILES += ../dnn.cpp 15 | LOCAL_STATIC_LIBRARIES := openblas 16 | COMMON_CFLAGS := -w -DANDROID -v 17 | 18 | 19 | 20 | LOCAL_CFLAGS += $(COMMON_CFLAGS) 21 | LOCAL_LDLIBS := -llog -landroid -latomic 22 | LOCAL_CPPFLAGS += -std=c++11 23 | LOCAL_CPPFLAGS +=-DNO_SIMD 24 | LOCAL_C_INCLUDES += \ 25 | $(NDK_PATH)/platforms/$(TARGET_PLATFORM)/arch-$(TARGET_ARCH)/usr/include \ 26 | $(LOCAL_PATH)/../jniLibs/include \ 27 | $(LOCAL_PATH)/../matrix.h \ 28 | $(LOCAL_PATH)/../dnn.h \ 29 | $(LOCAL_PATH)/../util.h \ 30 | 31 | #include $(BUILD_SHARED_LIBRARY) 32 | include $(BUILD_EXECUTABLE) 33 | 34 | ################################################################################ 35 | -------------------------------------------------------------------------------- /test/jni/Application.mk: -------------------------------------------------------------------------------- 1 | APP_OPTIM := release 2 | APP_PLATFORM := android-9 3 | APP_ABI := armeabi armeabi-v7a-hard x86 mips 4 | APP_MODULES := testblas.x 5 | NDK_TOOLCHAIN_VERSION := clang3.6 6 | -------------------------------------------------------------------------------- /test/jni/Application.mk~: -------------------------------------------------------------------------------- 1 | APP_OPTIM := release 2 | APP_PLATFORM := android-21 3 | APP_STL :=c++_static 4 | APP_CPPFLAGS += -fexceptions 5 | APP_CPPFLAGS += -latomic 6 | APP_CPPFLAGS += -DANDROID 7 | APP_CPPFLAGS += -std=c++11 8 | APP_ABI := armeabi 9 | APP_MODULES := qwr_nn.out 10 | NDK_TOOLCHAIN_VERSION := clang3.6 11 | -------------------------------------------------------------------------------- /test/jni/Application21.mk: -------------------------------------------------------------------------------- 1 | APP_OPTIM := release 2 | APP_PLATFORM := android-21 3 | APP_ABI := arm64-v8a x86_64 mips64 4 | APP_MODULES := testblas.x 5 | NDK_TOOLCHAIN_VERSION := clang3.6 6 | -------------------------------------------------------------------------------- /test/libs/arm64-v8a/testblas.x: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quickwritereader/openblasBuildForAndroid/f3c63ea37276d079ccbf33f44e8e36474756c57b/test/libs/arm64-v8a/testblas.x -------------------------------------------------------------------------------- /test/libs/armeabi-v7a/testblas.x: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quickwritereader/openblasBuildForAndroid/f3c63ea37276d079ccbf33f44e8e36474756c57b/test/libs/armeabi-v7a/testblas.x -------------------------------------------------------------------------------- /test/libs/armeabi/testblas.x: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quickwritereader/openblasBuildForAndroid/f3c63ea37276d079ccbf33f44e8e36474756c57b/test/libs/armeabi/testblas.x -------------------------------------------------------------------------------- /test/libs/mips/testblas.x: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quickwritereader/openblasBuildForAndroid/f3c63ea37276d079ccbf33f44e8e36474756c57b/test/libs/mips/testblas.x -------------------------------------------------------------------------------- /test/libs/mips64/testblas.x: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quickwritereader/openblasBuildForAndroid/f3c63ea37276d079ccbf33f44e8e36474756c57b/test/libs/mips64/testblas.x -------------------------------------------------------------------------------- /test/libs/x86/testblas.x: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quickwritereader/openblasBuildForAndroid/f3c63ea37276d079ccbf33f44e8e36474756c57b/test/libs/x86/testblas.x -------------------------------------------------------------------------------- /test/libs/x86_64/testblas.x: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quickwritereader/openblasBuildForAndroid/f3c63ea37276d079ccbf33f44e8e36474756c57b/test/libs/x86_64/testblas.x -------------------------------------------------------------------------------- /test/parameters.h: -------------------------------------------------------------------------------- 1 | /* 2 | In the test driver, there is a loop "for ( p=PFIRST; p<= PLAST; p+= PINC )" 3 | The below parameters set this range of values that p takes on 4 | */ 5 | #define PFIRST 40 6 | #define PLAST 800 7 | #define PINC 40 8 | 9 | /* 10 | In the test driver, the m, n, and k dimensions are set to the below 11 | values. If the value equals "-1" then that dimension is bound to the 12 | index p, given above. 13 | */ 14 | 15 | #define M -1 16 | #define N -1 17 | #define K -1 18 | 19 | /* 20 | In the test driver, each experiment is repeated NREPEATS times and 21 | the best time from these repeats is used to compute the performance 22 | */ 23 | 24 | #define NREPEATS 2 25 | 26 | /* 27 | Matrices A, B, and C are stored in two dimensional arrays with 28 | row dimensions that are greater than or equal to the row dimension 29 | of the matrix. This row dimension of the array is known as the 30 | "leading dimension" and determines the stride (the number of 31 | double precision numbers) when one goes from one element in a row 32 | to the next. Having this number larger than the row dimension of 33 | the matrix tends to adversely affect performance. LDX equals the 34 | leading dimension of the array that stores matrix X. If LDX=-1 35 | then the leading dimension is set to the row dimension of matrix X. 36 | */ 37 | 38 | #define LDA 1000 39 | #define LDB 1000 40 | #define LDC 1000 41 | -------------------------------------------------------------------------------- /test/print_matrix.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #define A( i, j ) a[ (j)*lda + (i) ] 4 | 5 | void print_matrix( int m, int n, double *a, int lda ) 6 | { 7 | int i, j; 8 | 9 | for ( j=0; j 2 | 3 | #define A( i,j ) a[ (j)*lda + (i) ] 4 | 5 | void random_matrix( int m, int n, double *a, int lda ) 6 | { 7 | double drand48(); 8 | int i,j; 9 | 10 | for ( j=0; j 2 | // #include 3 | #include 4 | 5 | #include "parameters.h" 6 | 7 | void REF_MMult(int, int, int, double *, int, double *, int, double *, int ); 8 | void MY_MMult(int, int, int, double *, int, double *, int, double *, int ); 9 | void copy_matrix(int, int, double *, int, double *, int ); 10 | void random_matrix(int, int, double *, int); 11 | double compare_matrices( int, int, double *, int, double *, int ); 12 | 13 | double dclock(); 14 | 15 | int main() 16 | { 17 | int 18 | p, 19 | m, n, k, 20 | lda, ldb, ldc, 21 | rep; 22 | 23 | double 24 | dtime, dtime_best, 25 | gflops, 26 | diff; 27 | 28 | double 29 | *a, *b, *c, *cref, *cold; 30 | 31 | printf( "MY_MMult = [\n" ); 32 | 33 | for ( p=PFIRST; p<=PLAST; p+=PINC ){ 34 | m = ( M == -1 ? p : M ); 35 | n = ( N == -1 ? p : N ); 36 | k = ( K == -1 ? p : K ); 37 | 38 | gflops = 2.0 * m * n * k * 1.0e-09; 39 | 40 | lda = ( LDA == -1 ? m : LDA ); 41 | ldb = ( LDB == -1 ? k : LDB ); 42 | ldc = ( LDC == -1 ? m : LDC ); 43 | 44 | /* Allocate space for the matrices */ 45 | /* Note: I create an extra column in A to make sure that 46 | prefetching beyond the matrix does not cause a segfault */ 47 | a = ( double * ) malloc( lda * (k+1) * sizeof( double ) ); 48 | b = ( double * ) malloc( ldb * n * sizeof( double ) ); 49 | c = ( double * ) malloc( ldc * n * sizeof( double ) ); 50 | cold = ( double * ) malloc( ldc * n * sizeof( double ) ); 51 | cref = ( double * ) malloc( ldc * n * sizeof( double ) ); 52 | 53 | /* Generate random matrices A, B, Cold */ 54 | random_matrix( m, k, a, lda ); 55 | random_matrix( k, n, b, ldb ); 56 | random_matrix( m, n, cold, ldc ); 57 | 58 | copy_matrix( m, n, cold, ldc, cref, ldc ); 59 | 60 | /* Run the reference implementation so the answers can be compared */ 61 | 62 | REF_MMult( m, n, k, a, lda, b, ldb, cref, ldc ); 63 | 64 | /* Time the "optimized" implementation */ 65 | for ( rep=0; rep