Создайте заменяющую запись таблицы кода из концептуального и спецификаций строки аргумента реализации
tableEntry = createCRLEntry(crTable,conceptualSpecification,implementationSpecification) возвращает заменяющую запись таблицы кода. Запись сопоставляет концептуальное представление функции или оператора к представлению реализации. Аргумент tableEntry = createCRLEntry(crTable,conceptualSpecification,implementationSpecification)conceptualSpecification является вектором символов или скаляром строки, который задает имя и концептуальные аргументы, знакомые генератору кода, для функции или оператора, чтобы заменить. Аргумент implementationSpecification является вектором символов или скаляром строки, который задает имя и аргументы реализации C/C++ для заменяющей функции.
Эта функция не поддерживает:
Реализации C++
Выравнивание данных
Замена оператора с сетевыми наклонными аргументами
Спецификации параметра записи (например, приоритет, алгоритм, создавая информацию)
Семафор и взаимоисключающие замены функции
В спецификациях синтаксиса поместите пробел до и после символа оператора. Например, используйте double u1 + double u2 вместо double u1+double u2. Кроме того, звездочка (*), тильда (~), и точка с запятой (;) имеют следующее значение.
| Символ | Значение |
|---|---|
| * |
|
| ~ | На основе положения символа наклоны или смещение должны быть тем же самым через типы данных. |
| ; | Разделяет области значений размерности. Например, [1 10; 1 100] задает вектор с длиной от 10 до 100. |
Следующая таблица показывает синтаксис для концептуальных спецификаций и спецификаций реализации на основе:
Создаете ли вы запись для функции или оператора.
Тип или характеристика замены кода.
| Тип замены | Концептуальный синтаксис | Синтаксис реализации |
|---|---|---|
| Функциональный заменяющий синтаксис кода | ||
| Типичный | double y1 = sin(double u1) | double y1 = mySin(double u1) |
| Выведите типы данных аргумента реализации от концептуальной спецификации | double y1 = sin(double u1) | y1 = mySin(u1) |
| Выведите аргументы реализации и типы данных от концептуальной спецификации | double y1 = sin(double u1) | mySin |
| Измените тип данных | single y1 = sin(single u1) | double y1 = mySin(double u1) |
| Переупорядочьте аргументы | double y1 = atan2(double u1, double u2) | y1 = myAtan(u2, u1) |
| Задайте аргументы вектор-столбца | double y1 = sin(double u1[10]) | double y1 = mySin(double* u1) |
| Задайте аргументы вектор-столбца и область значений размерности | double y1[1 100; 1 100] = sin(double u1[1 100; 1 100]) | mySin(double* u1, double* y1) |
| Повторно сопоставьте возвращаемое значение как выходной аргумент | double y1 = sin(double u1) | mySin(double u1, double* y1) |
| Задайте типы данных с фиксированной точкой | fixdt(1,16,3) y1 = sin(fixdt(1,16,3) u1) | int16 y1 = mySin(int16 u1) |
Задайте типы данных с фиксированной точкой и установите CheckSlope на false, CheckBias к true и Bias к 0 | fixdt(1,16,*) y1 = sin(fixdt(1,16,*) u1) | int16 y1 = mySin(int16 u1) |
Задайте типы данных с фиксированной точкой и установите SlopesMustBeTheSame на true, CheckSlope к false, CheckBias к true и Bias к 0 | fixdt(1,16,~) y1 = sin(fixdt(1,16,~) u1) | int16 y1 = mySin(int16 u1) |
Задайте типы данных с фиксированной точкой и установите SlopesMustBeTheSame на true, BiasMustBeTheSame к true, CheckSlope к false и CheckBias к false | fixdt(1,16,~,~) y1 = sin(fixdt(1,16,~,~) u1) | int16 y1 = mySin(int16 u1) |
| Задайте несколько выходных аргументов | [double y1 double y2] = foo(double u1, double u2) | double y1 = myFoo(double u1, double u2, double* y2) |
| Заменяющий синтаксис оператора кода | ||
| Типичный | int16 y1 = int16 u1 + int16 u2 | int16 y1 = myAdd(int16 u1, int16 u2) |
| Задайте типы данных с фиксированной точкой | fixdt(1,16,3) y1 = fixdt(1,16,3) u1 + fixdt(1,16,3) u2 | int16 y1 = myAdd(int16 u1, int16 u2) |
Задайте типы данных с фиксированной точкой и установите CheckSlope на false, CheckBias к true и Bias к 0 | fixdt(1,16,*) y1 = fixdt(1,16,*) u1 + fixdt(1,16,*) u2 | int16 y1 = myAdd(int16 u1, int16 u2) |
| Задайте типы данных с фиксированной точкой, подстановочный знак, наклоны должны быть тем же самым и нулевым смещением | fixdt(1,16,~,0) y1 = fixdt(1,16,~,0) u1 + fixdt(1,16,~,0) u2 | int16 y1 = myAdd(int16 u1, int16 u2) |
| Преобразование типа | int16 y1 = int8 u1 | int16 y1 = myCast(int8 u1) |
| Сдвиг | int16 y1 = int16 u1 << int16 u2int16 y1 = int16 u1 >> int16 u2int16 y1 = int16 u1 .>> int16 u2 | int16 y1 = myShiftLeft(int16 u1, int16 u2)int16 y1 = myShiftRightArithmetic(int16 u1, int16 u2)int16 y1 = myShiftRightLogical(int16 u1, int16 u2) |
| Задайте оператор отношения | bool y1 = int16 u1 < int16 u2 | bool y1 = myLessThan(int6 u1, int16 u2) |
| Задайте умножение и деление | int32 y1 = int32 u1 * in32 u2 / in32 u3 | int32 y1 = myMultDiv(int32 u1, int32 u2, int32 u3) |
| Задайте умножение матриц | double y1[10][10] = double u1[10][10] * double u2[10][10] | myMult(double* u1, double* u2, double* y1) |
| Задайте поэлементное умножение матриц | double y1[10][10] = double u1[10][10] .* double u2[10][10] | myMult(double* u1, double* u2, double* y1) |
| Укажите, что умножение матриц с транспонирует входного параметра | double y1[10][10] = double u1[10][10]' * double u2[10][10] | myMult(double* u1, double* u2, double* y1) |
| Задайте умножение матриц с Эрмитовым из входного параметра | cdouble y1[10][10] = cdouble u1[10][10]' * cdouble u2[10][10]cdouble y1[10][10] = cdouble u1[10][10] * cdouble u2[10][10]' | myMult(cdouble* u1, cdouble* u2, cdouble* y1) |
| Задайте покинутое матричное деление | double y1[10][10] = double u1[10][10] \ double u2[10][10] | myLeftDiv(double* u1, double* u2, double* y1) |
| Задайте правильное матричное деление | double y1[10][10] = double u1[10][10] / double u2[10][10] | myRightDiv(double* u1, double* u2, double* y1) |