Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <WolframLibrary.h>
- #include <mkl_lapacke.h>
- DLLEXPORT mint WolframLibrary_getVersion( ) {
- return WolframLibraryVersion;
- }
- DLLEXPORT int WolframLibrary_initialize( WolframLibraryData libData) {
- return 0;
- }
- DLLEXPORT void WolframLibrary_uninitialize( WolframLibraryData libData) {
- return;
- }
- DLLEXPORT int zheev(
- WolframLibraryData libData,
- mint argc,
- MArgument *args,
- MArgument res) {
- MTensor input = MArgument_getMTensor(args[0]);
- MKL_Complex16 *data = (MKL_Complex16*) libData->MTensor_getComplexData(input);
- const mint *dims = libData->MTensor_getDimensions(input);
- MKL_INT n = dims[0], info, lda = n;
- double *w = (double*) malloc(n*sizeof(double));
- info = LAPACKE_zheev(LAPACK_ROW_MAJOR, 'V', 'L', n, data, lda, w);
- if (info > 0) {
- free(w);
- return LIBRARY_NUMERICAL_ERROR;
- }
- MArgument_setMTensor(res, input);
- return LIBRARY_NO_ERROR;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement