MCPcopy Create free account
hub / github.com/numpy/numpy / init_gesdd

Function init_gesdd

numpy/linalg/umath_linalg.cpp:2643–2739  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2641
2642template<typename ftyp>
2643static inline int
2644init_gesdd(GESDD_PARAMS_t<ftyp> *params,
2645 char jobz,
2646 fortran_int m,
2647 fortran_int n, scalar_trait)
2648{
2649 npy_uint8 *mem_buff = NULL;
2650 npy_uint8 *mem_buff2 = NULL;
2651 npy_uint8 *a, *s, *u, *vt, *work, *iwork;
2652 size_t safe_m = m;
2653 size_t safe_n = n;
2654 size_t a_size = safe_m * safe_n * sizeof(ftyp);
2655 fortran_int min_m_n = fortran_int_min(m, n);
2656 size_t safe_min_m_n = min_m_n;
2657 size_t s_size = safe_min_m_n * sizeof(ftyp);
2658 fortran_int u_row_count, vt_column_count;
2659 size_t safe_u_row_count, safe_vt_column_count;
2660 size_t u_size, vt_size;
2661 fortran_int work_count;
2662 size_t work_size;
2663 size_t iwork_size = 8 * safe_min_m_n * sizeof(fortran_int);
2664 fortran_int ld = fortran_int_max(m, 1);
2665
2666 if (!compute_urows_vtcolumns(jobz, m, n, &u_row_count, &vt_column_count)) {
2667 goto error;
2668 }
2669
2670 safe_u_row_count = u_row_count;
2671 safe_vt_column_count = vt_column_count;
2672
2673 u_size = safe_u_row_count * safe_m * sizeof(ftyp);
2674 vt_size = safe_n * safe_vt_column_count * sizeof(ftyp);
2675
2676 mem_buff = (npy_uint8 *)malloc(a_size + s_size + u_size + vt_size + iwork_size);
2677
2678 if (!mem_buff) {
2679 goto error;
2680 }
2681
2682 a = mem_buff;
2683 s = a + a_size;
2684 u = s + s_size;
2685 vt = u + u_size;
2686 iwork = vt + vt_size;
2687
2688 /* fix vt_column_count so that it is a valid lapack parameter (0 is not) */
2689 vt_column_count = fortran_int_max(1, vt_column_count);
2690
2691 params->M = m;
2692 params->N = n;
2693 params->A = (ftyp*)a;
2694 params->S = (ftyp*)s;
2695 params->U = (ftyp*)u;
2696 params->VT = (ftyp*)vt;
2697 params->RWORK = NULL;
2698 params->IWORK = (fortran_int*)iwork;
2699 params->LDA = ld;
2700 params->LDU = ld;

Callers 1

svd_wrapperFunction · 0.85

Calls 4

fortran_int_minFunction · 0.85
fortran_int_maxFunction · 0.85
compute_urows_vtcolumnsFunction · 0.85
call_gesddFunction · 0.85

Tested by

no test coverage detected