LINUX.ORG.RU

К Lisp программистам.


0

0

for (m = 1; m<m_max; m++)
{
Speed[1][m] = (kViscosity*dt)*(Speed[0][m+1]-2*Speed[0][m]+Speed[0][m+1])/(dr*dr) +
(kViscosity*dt)*(Speed[0][m+1]-Speed[0][m-1])/(2*m*dr*dr) -
(kViscosity*dt)*(Speed[0][m]*Speed[0][m])/(m*m*dr*dr) +
Speed[0][m];
}
Уважаемые знатоки Lisp-а, скажите, пожалуйста, как будет выглядеть выражение эквивалентное данному, записанное на Common Lisp.

anonymous

"знатоки Lisp-а", впрочем как и любые другие "знатоки", такую _неоптимизированную_ херь писать не будут.

yyk ★★★★★
()

для единичного случая чёто вроде такого я думаю:

(loop for m from 1 below m_max do
    (setf (aref Speed 1 m)
        (let* (
          (k (/ (* kViscosity dt) dr dr))
          (ss (aref Speed 0 m))
          (sp (aref Speed 0 (+ m 1)))
          (sm (aref Speed 0 (- m 1)))
          (a1 (* 2 (- sp ss)))
          (a2 (/ (- sp sm) (* 2 m)))
          (a3 (/ (* ss ss) (* m m)))
            (+ (* k (+ a1 a2 (- a3))) ss)))))

а если таких художеств в проге много, наверное луче было бы
 применить http://www.dwheeler.com/readable/sweet-expressions.html

bugmaker ★★★★☆
()
Ответ на: комментарий от bugmaker

Благодарю, особенно за ссылку.

anonymous
()
Ответ на: комментарий от theserg

> лисп не для таких задач??

угу, особенно если не "сворачивать" формулы, а наоборот - раскрыть все скобки и писать получившееся выражение строками по 80 символов... ;)

yyk ★★★★★
()

Сабж прочёл как KLisp - думаю KDE lisp чтоли изобрели? СПАТЬ!!!

golodranez ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.