Допустим, надо решить два эллиптических уравнения в одной программе (потому что они являются элементами более сложной модели). Одно уравнение комплексное, другое вещественное. Один метод решения одинаково хорошо подходит для обоих уравнений. Соответственно реализуем метод в отдельном модуле и далее на его основе описываем уравнения.

Однако как описать уравнения с разными типами данных для одного метода решения?

Можно описать вещественное уравнение как частный случай комплексного и использовать один комплексный модуль. Тогда получаем оверхед по памяти и производительности.

Можно написать два почти идентичных модуля - один вещественный, другой комплексный. Тогда получаем двойную работу по их сопровождению.

Если бы в обероне имелись родовые модули как в ада, проблема решалась бы простой параметризацией родового модуля вещественным или комплексным типом.