



'''simple docstring'''

import doctest
from collections import deque

import numpy as np

class       __magic_name__		:







							def __init__(				self   :			Any						):
									_a	: Optional[Any]								=				[2, 1, 2, -1]
									_a	: str								=				[1, 2, 3, 4]







							def 				__lowercase     (				self   :			Dict						):
									_a	: int								=				len(self.first_signal						)
									_a	: Dict								=				len(self.second_signal						)

									_a	: List[str]								=				max(_UpperCAmelCase      ,_UpperCAmelCase						)

									# create a zero matrix of max_length x max_length
									_a	: List[str]								=				[[0] * max_length for i in range(_UpperCAmelCase						)]

									# fills the smaller signal with zeros to make both signals of same length
									if length_first_signal < length_second_signal:
											self.first_signal += [0] * (max_length - length_first_signal)
									elif length_first_signal > length_second_signal:
											self.second_signal += [0] * (max_length - length_second_signal)
									for i in range(_UpperCAmelCase						):
											_a	: List[Any]								=				deque(self.second_signal						)
											rotated_signal.rotate(_UpperCAmelCase						)
											for j, item in enumerate(_UpperCAmelCase						):
													matrix[i][j] += item

        # multiply the matrix with the first signal
									_a	: str								=				np.matmul(np.transpose(_UpperCAmelCase						)      ,np.transpose(self.first_signal						)						)

									# rounding-off to two decimal places
									return [round(_UpperCAmelCase      ,2						) for i in final_signal]


if __name__ == "__main__":
							doctest.testmod()









'''simple docstring'''

from abc import ABC, abstractmethod
from argparse import ArgumentParser

class       __magic_name__		(       _UpperCamelCase  ):







							@staticmethod
							@abstractmethod
							def 				__lowercase     (				_UpperCAmelCase   :			ArgumentParser						):
									raise NotImplementedError()







							@abstractmethod
							def 				__lowercase     (				self   :			str						):
									raise NotImplementedError()




