Фортран
Фортра́н () — первый язык программирования высокого уровня, получивший практическое применение, имеющий транслятор и испытавший дальнейшее развитие. Создан в период с 1954 по 1957 год группой программистов под руководством Джона Бэкуса в корпорации IBM. Название Fortran является сокращением от FORmula TRANslator (переводчик формул). Фортран широко используется в первую очередь для научных и инженерных вычислений. Одно из преимуществ современного Фортрана — большое количество написанных на нём программ и библиотек подпрограмм.
Фортран
codice_167 — встроенная функция матричного перемножения. Перемножает две матрицы, матрицу на вектор, вектор на матрицу по правилам линейной алгебры. Аргументы функции "matrix_a" и "matrix_b" — двумерные или одномерные численные (любых встроенных численных типов) или логические массивы. Аргументами функции не могут быть одновременно два вектора: один из аргументов обязан быть матрицей (двумерным массивом). Число элементов первого (либо единственного) измерения массива "matrix_b" должно быть равно числу элементов последнего измерения массива "matrix_a". Введена стандартом F’90.
В некоторых случаях при расчёте произведения вектор-столбца на вектор-строку, требующего при использовании функции codice_42 дополнительного преобразовывания векторов в матрицы формы codice_169 и codice_170, эффективность codice_42 по данным Бартеньева заметно уступает обычному вложенному циклу.
По тестам NASA для произведения матриц (двумерных массивов) быстродействие codice_42 компилятора фирмы Intel при использовании полной оптимизации "-O3" существенно (в некоторых случаях — на порядок) превышает быстродействие вложенных циклов, хотя для матриц размером ~1000×1000 и больше несколько уступает быстродействию подпрограммы DGEMM библиотеки LAPAK. В то же время для матриц ~100×100 и меньше codice_42 превосходит по скорости DGEMM. Компилятор Фортрана фирмы IBM, начиная с версии F’90, использует для codice_42 алгоритм Винограда — Штрассена со сложностью formula_5. Отметим, что стандартом алгоритмические реализации математических функций обычно не оговариваются и остаются на усмотрение разработчика компилятора.