Мой вывод
//Calculate the fast approximate cosine of the input argument.
__device__ float __cosf (float x);
//Calculate the fast approximate base 10 exponential of the input argument.
__device__ float __exp10f (float x);
//Calculate the fast approximate base e exponential of the input argument.
__device__ float __expf (float x);
//Add two floating point values in round-down mode.
__device__ float __fadd_rd (float x, float y);
//Add two floating point values in round-to-nearest-even mode.
__device__ float __fadd_rn (float x, float y);
//Add two floating point values in round-up mode.
__device__ float __fadd_ru (float x, float y);
Я сделал это одной командой в vi:
:%s/\(__device.*\n\)\(.*$\)/\2^M\1/g
Хотя есть один трюк. Чтобы ввести ^M
, я нажал Ctrl-V , а затем нажал клавишу Enter.
Подробное объяснение:
В основном, чтобы заменить все совпадения чего-либо в команде vi:
%s/something/other/g
Вместо косой черты можно использовать любой символ. Так что
%s,something,other,g
делает то же самое.
«что-то» - это то, что мы ищем, а «другое» - это замена.
В моем случае я искал слово »__device ", за которым следуют любые символы (.*
обозначает« что-нибудь »), а затем оканчивается символом новой строки \n
.
Я пометил части строки поиска, которые хочу использовать повторно, с помощью \( \)
.
Доллар означает «конец строки».
И затем я просто возвращаю все в обратном порядке с помощью \2
и \1
.
, чтобы ввести новую строку. Я нажал Ctrl-V, а затем введите.
Я надеюсь, это объясняет. Обратите внимание, я использую vim, который расшифровывается как Vi Improved. Старая школа простой VI может не хватать некоторых функций. В большинстве Unix-систем в наши дни установка пакета "vim" сделает его доступным, когда его нет по умолчанию.
РЕДАКТИРОВАТЬ: На самом деле вы можете опустить знак доллара. .*
в любом случае поиск выполняется только до конца строки. Но я думаю, что держу это в ответе, потому что иногда это нужно регулярному выражению, и это полезное знание.