ilaenv.c

来自「InsightToolkit-1.4.0(有大量的优化算法程序)」· C语言 代码 · 共 551 行 · 第 1/2 页

C
551
字号
                s_cmp(c4, "LQ", 2L, 2L) == 0 ||
                s_cmp(c4, "QL", 2L, 2L) == 0 ||
                s_cmp(c4, "HR", 2L, 2L) == 0 ||
                s_cmp(c4, "TR", 2L, 2L) == 0 ||
                s_cmp(c4, "BR", 2L, 2L) == 0) {
                nb = 32;
            }
        }
    } else if (cname && s_cmp(c2, "UN", 2L, 2L) == 0) {
        if (*c3 == 'G') {
            if (s_cmp(c4, "QR", 2L, 2L) == 0 ||
                s_cmp(c4, "RQ", 2L, 2L) == 0 ||
                s_cmp(c4, "LQ", 2L, 2L) == 0 ||
                s_cmp(c4, "QL", 2L, 2L) == 0 ||
                s_cmp(c4, "HR", 2L, 2L) == 0 ||
                s_cmp(c4, "TR", 2L, 2L) == 0 ||
                s_cmp(c4, "BR", 2L, 2L) == 0) {
                nb = 32;
            }
        } else if (*c3 == 'M') {
            if (s_cmp(c4, "QR", 2L, 2L) == 0 ||
                s_cmp(c4, "RQ", 2L, 2L) == 0 ||
                s_cmp(c4, "LQ", 2L, 2L) == 0 ||
                s_cmp(c4, "QL", 2L, 2L) == 0 ||
                s_cmp(c4, "HR", 2L, 2L) == 0 ||
                s_cmp(c4, "TR", 2L, 2L) == 0 ||
                s_cmp(c4, "BR", 2L, 2L) == 0) {
                nb = 32;
            }
        }
    } else if (s_cmp(c2, "GB", 2L, 2L) == 0) {
        if (s_cmp(c3, "TRF", 3L, 3L) == 0) {
            if (sname) {
                if (*n4 <= 64) {
                    nb = 1;
                } else {
                    nb = 32;
                }
            } else {
                if (*n4 <= 64) {
                    nb = 1;
                } else {
                    nb = 32;
                }
            }
        }
    } else if (s_cmp(c2, "PB", 2L, 2L) == 0) {
        if (s_cmp(c3, "TRF", 3L, 3L) == 0) {
            if (sname) {
                if (*n2 <= 64) {
                    nb = 1;
                } else {
                    nb = 32;
                }
            } else {
                if (*n2 <= 64) {
                    nb = 1;
                } else {
                    nb = 32;
                }
            }
        }
    } else if (s_cmp(c2, "TR", 2L, 2L) == 0) {
        if (s_cmp(c3, "TRI", 3L, 3L) == 0) {
            if (sname) {
                nb = 64;
            } else {
                nb = 64;
            }
        }
    } else if (s_cmp(c2, "LA", 2L, 2L) == 0) {
        if (s_cmp(c3, "UUM", 3L, 3L) == 0) {
            if (sname) {
                nb = 64;
            } else {
                nb = 64;
            }
        }
    } else if (sname && s_cmp(c2, "ST", 2L, 2L) == 0) {
        if (s_cmp(c3, "EBZ", 3L, 3L) == 0) {
            nb = 1;
        }
    }
    return nb;

L200:

/*     ISPEC = 2:  minimum block size */

    nbmin = 2;
    if (s_cmp(c2, "GE", 2L, 2L) == 0) {
        if (s_cmp(c3, "QRF", 3L, 3L) == 0 ||
            s_cmp(c3, "RQF", 3L, 3L) == 0 ||
            s_cmp(c3, "LQF", 3L, 3L) == 0 ||
            s_cmp(c3, "QLF", 3L, 3L) == 0) {
            if (sname) {
                nbmin = 2;
            } else {
                nbmin = 2;
            }
        } else if (s_cmp(c3, "HRD", 3L, 3L) == 0) {
            if (sname) {
                nbmin = 2;
            } else {
                nbmin = 2;
            }
        } else if (s_cmp(c3, "BRD", 3L, 3L) == 0) {
            if (sname) {
                nbmin = 2;
            } else {
                nbmin = 2;
            }
        } else if (s_cmp(c3, "TRI", 3L, 3L) == 0) {
            if (sname) {
                nbmin = 2;
            } else {
                nbmin = 2;
            }
        }
    } else if (s_cmp(c2, "SY", 2L, 2L) == 0) {
        if (s_cmp(c3, "TRF", 3L, 3L) == 0) {
            if (sname) {
                nbmin = 8;
            } else {
                nbmin = 8;
            }
        } else if (sname && s_cmp(c3, "TRD", 3L, 3L) == 0) {
            nbmin = 2;
        }
    } else if (cname && s_cmp(c2, "HE", 2L, 2L) == 0) {
        if (s_cmp(c3, "TRD", 3L, 3L) == 0) {
            nbmin = 2;
        }
    } else if (sname && s_cmp(c2, "OR", 2L, 2L) == 0) {
        if (*c3 == 'G') {
            if (s_cmp(c4, "QR", 2L, 2L) == 0 ||
                s_cmp(c4, "RQ", 2L, 2L) == 0 ||
                s_cmp(c4, "LQ", 2L, 2L) == 0 ||
                s_cmp(c4, "QL", 2L, 2L) == 0 ||
                s_cmp(c4, "HR", 2L, 2L) == 0 ||
                s_cmp(c4, "TR", 2L, 2L) == 0 ||
                s_cmp(c4, "BR", 2L, 2L) == 0) {
                nbmin = 2;
            }
        } else if (*c3 == 'M') {
            if (s_cmp(c4, "QR", 2L, 2L) == 0 ||
                s_cmp(c4, "RQ", 2L, 2L) == 0 ||
                s_cmp(c4, "LQ", 2L, 2L) == 0 ||
                s_cmp(c4, "QL", 2L, 2L) == 0 ||
                s_cmp(c4, "HR", 2L, 2L) == 0 ||
                s_cmp(c4, "TR", 2L, 2L) == 0 ||
                s_cmp(c4, "BR", 2L, 2L) == 0) {
                nbmin = 2;
            }
        }
    } else if (cname && s_cmp(c2, "UN", 2L, 2L) == 0) {
        if (*c3 == 'G') {
            if (s_cmp(c4, "QR", 2L, 2L) == 0 ||
                s_cmp(c4, "RQ", 2L, 2L) == 0 ||
                s_cmp(c4, "LQ", 2L, 2L) == 0 ||
                s_cmp(c4, "QL", 2L, 2L) == 0 ||
                s_cmp(c4, "HR", 2L, 2L) == 0 ||
                s_cmp(c4, "TR", 2L, 2L) == 0 ||
                s_cmp(c4, "BR", 2L, 2L) == 0) {
                nbmin = 2;
            }
        } else if (*c3 == 'M') {
            if (s_cmp(c4, "QR", 2L, 2L) == 0 ||
                s_cmp(c4, "RQ", 2L, 2L) == 0 ||
                s_cmp(c4, "LQ", 2L, 2L) == 0 ||
                s_cmp(c4, "QL", 2L, 2L) == 0 ||
                s_cmp(c4, "HR", 2L, 2L) == 0 ||
                s_cmp(c4, "TR", 2L, 2L) == 0 ||
                s_cmp(c4, "BR", 2L, 2L) == 0) {
                nbmin = 2;
            }
        }
    }
    return nbmin;

L300:

/*     ISPEC = 3:  crossover point */

    nx = 0;
    if (s_cmp(c2, "GE", 2L, 2L) == 0) {
        if (s_cmp(c3, "QRF", 3L, 3L) == 0 ||
            s_cmp(c3, "RQF", 3L, 3L) == 0 ||
            s_cmp(c3, "LQF", 3L, 3L) == 0 ||
            s_cmp(c3, "QLF", 3L, 3L) == 0) {
            if (sname) {
                nx = 128;
            } else {
                nx = 128;
            }
        } else if (s_cmp(c3, "HRD", 3L, 3L) == 0) {
            if (sname) {
                nx = 128;
            } else {
                nx = 128;
            }
        } else if (s_cmp(c3, "BRD", 3L, 3L) == 0) {
            if (sname) {
                nx = 128;
            } else {
                nx = 128;
            }
        }
    } else if (s_cmp(c2, "SY", 2L, 2L) == 0) {
        if (sname && s_cmp(c3, "TRD", 3L, 3L) == 0) {
            nx = 1;
        }
    } else if (cname && s_cmp(c2, "HE", 2L, 2L) == 0) {
        if (s_cmp(c3, "TRD", 3L, 3L) == 0) {
            nx = 1;
        }
    } else if (sname && s_cmp(c2, "OR", 2L, 2L) == 0) {
        if (*c3 == 'G') {
            if (s_cmp(c4, "QR", 2L, 2L) == 0 ||
                s_cmp(c4, "RQ", 2L, 2L) == 0 ||
                s_cmp(c4, "LQ", 2L, 2L) == 0 ||
                s_cmp(c4, "QL", 2L, 2L) == 0 ||
                s_cmp(c4, "HR", 2L, 2L) == 0 ||
                s_cmp(c4, "TR", 2L, 2L) == 0 ||
                s_cmp(c4, "BR", 2L, 2L) == 0) {
                nx = 128;
            }
        }
    } else if (cname && s_cmp(c2, "UN", 2L, 2L) == 0) {
        if (*c3 == 'G') {
            if (s_cmp(c4, "QR", 2L, 2L) == 0 ||
                s_cmp(c4, "RQ", 2L, 2L) == 0 ||
                s_cmp(c4, "LQ", 2L, 2L) == 0 ||
                s_cmp(c4, "QL", 2L, 2L) == 0 ||
                s_cmp(c4, "HR", 2L, 2L) == 0 ||
                s_cmp(c4, "TR", 2L, 2L) == 0 ||
                s_cmp(c4, "BR", 2L, 2L) == 0) {
                nx = 128;
            }
        }
    }
    return nx;

L400:

/*     ISPEC = 4:  number of shifts (used by xHSEQR) */

    return 6;

L500:

/*     ISPEC = 5:  minimum column dimension (not used) */

    return 2;

L600:

/*     ISPEC = 6:  crossover point for SVD (used by xGELSS and xGESVD) */

    return (integer) ((real) min(*n1,*n2) * 1.6f);

L700:

/*     ISPEC = 7:  number of processors (not used) */

    return 1;

L800:

/*     ISPEC = 8:  crossover point for multishift (used by xHSEQR) */

    return 50;

} /* ilaenv_ */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?