Nagtahan Interchange

The Nagtahan Interchange, also known as the Nagtahan Flyover and the Mabini Flyover, is a three-level set of three intersecting flyovers in Manila, the Philippines which serves as the junction between Lacson Avenue, Nagtahan Street, Legarda Street, Magsaysay Boulevard, and Jose P. Laurel Street, as well as the nearby Mabini Bridge.

Nagtahan Interchange
Nagtahan Flyover
Mabini Flyover
The Nagtahan Interchange in 2014.
Location
Sampaloc and Santa Mesa, Manila, Philippines
Coordinates14°36′03.9″N 120°59′57.6″E
Roads at
junction
N140 (Lacson Avenue)
N140 (Nagtahan Street)
N180 (Legarda Street)
N180 (Magsaysay Boulevard)
Jose P. Laurel Street
Construction
TypeThree-level set of intersecting flyovers
OpenedMarch 1992 (1992-03)
Maintained byDepartment of Public Works and Highways

History

Straddling the boundary between Sampaloc and Santa Mesa, the interchange was originally the Rotonda de Sampaloc,[1] a roundabout which at the turn of the 20th century marked the boundary between Manila's urban core and its suburbs.[2] At the center was the Carriedo Fountain, built in 1884 to commemorate the inauguration of Manila's waterworks system.[3] However, in 1976 the Rotonda de Sampaloc was cleared due to traffic congestion, and the Carriedo Fountain was moved, first to the headquarters of the Metropolitan Waterworks and Sewerage System in Diliman, Quezon City, and eventually to Plaza Santa Cruz in downtown Manila, where it remains today.[1][2]

The eventual construction of the interchange was driven by the need to alleviate continuing severe traffic congestion along the Circumferential Road 2 corridor. In February 1990, the administration of President Corazon Aquino signed an agreement with Japan to fund the construction of two interchanges, including the Nagtahan Interchange, using Japanese official development assistance funds. The project was later certified as urgent by the Aquino administration, which allowed it to proceed quickly with construction, and the near-¥1.6 billion (257.58 million) interchange began construction in May 1991. The completed interchange was opened to traffic in March 1992, ten months ahead of schedule.[4]

A subsequent study by the Japan International Cooperation Agency issued in 2001 shows that in the nine years since the Nagtahan Interchange was constructed, traffic flows improved considerably despite the doubling in the number of cars on Metro Manila roads in that same time frame. However, there were concerns that underinvestment in its maintenance would be detrimental for any major rehabilitation work to take place when the need arises.[4]

Artwork

In 2013, students from various universities in Metro Manila re-touched the murals of prominent national heroes which were painted along the stone column of the Nagtahan Interchange. The project was undertaken by the Metropolitan Manila Development Authority, where it aimed to create awareness of Filipino history and culture.[5]

gollark: > `x = _(int(0, e), int(e, е))`You may note that this would produce slices of 0 size. However, one of the `e`s is a homoglyph; it contains `2 * e`.`return Result[0][0], x, m@set({int(e, 0), int(е, e)}), w`From this, it's fairly obvious what `strassen` *really* does - partition `m1` into 4 block matrices of half (rounded up to the nearest power of 2) size.> `E = typing(lookup[2])`I forgot what this is meant to contain. It probably isn't important.> `def exponentiate(m1, m2):`This is the actual multiplication bit.> `if m1.n == 1: return Mаtrix([[m1.bigData[0] * m2.bigData[0]]])`Recursion base case. 1-sized matrices are merely multiplied scalarly.> `aa, ab, ac, ad = strassen(m1)`> `аa, аb, аc, аd = strassen(m2)`More use of homoglyph confusion here. The matrices are quartered.> `m = m1.subtract(exponentiate(aa, аa) ** exponentiate(ab, аc), exponentiate(aa, аb) ** exponentiate(ab, аd), exponentiate(ac, аa) ** exponentiate(ad, аc), exponentiate(ac, аb) ** exponentiate(ad, аd)) @ [-0j, int.abs(m2.n * 3, m1.n)]`This does matrix multiplication in an inefficient *recursive* way; the Strassen algorithm could save one of eight multiplications here, which is more efficient (on big matrices). It also removes the zero padding.> `m = exponentiate(Mаtrix(m1), Mаtrix(m2)) @ (0j * math.sin(math.asin(math.sin(math.asin(math.sin(math.e))))), int(len(m1), len(m1)))`This multiples them and I think also removes the zero padding again, as we want it to be really very removed.> `i += 1`This was added as a counter used to ensure that it was usably performant during development.> `math.factorial = math.sinh`Unfortunately, Python's factorial function has really rather restrictive size limits.> `for row in range(m.n):`This converts back into the 2D array format.> `for performance in sorted(dir(gc)): getattr(gc, performance)()`Do random fun things to the GC.
gollark: > `globals()[Row + Row] = random.randint(*sys.version_info[:2])`Never actually got used anywhere.> `ε = sys.float_info.epsilon`Also not used. I just like epsilons.> `def __exit__(self, _, _________, _______):`This is also empty, because cleaning up the `_` global would be silly. It'll be overwritten anyway. This does serve a purpose, however, and not just in making it usable as a context manager. This actually swallows all errors, which is used in some places.> `def __pow__(self, m2):`As ever, this is not actual exponentiation. `for i, (ι, 𐌉) in enumerate(zip(self.bigData, m2.bigData)): e.bigData[i] = ι + 𐌉` is in fact just plain and simple addition of two matrices.> `def subtract(forth, 𝕒, polynomial, c, vector_space):`This just merges 4 submatrices back into one matrix.> `with out as out, out, forth:`Apart from capturing the exceptions, this doesn't really do much either. The `_` provided by the context manager is not used.> `_(0j, int(0, 𝕒.n))`Yes, it's used in this line. However, this doesn't actually have any effect whatsoever on the execution of this. So I ignore it. It was merely a distraction.> `with Mаtrix(ℤ(ℤ(4))):`It is used again to swallow exceptions. After this is just some fluff again.> `def strassen(m, x= 3.1415935258989):`This is an interesting part. Despite being called `strassen`, it does not actually implement the Strassen algorithm, which is a somewhat more efficient way to multiply matrices than the naive way used in - as far as I can tell - every entry.> `e = 2 ** (math.ceil(math.log2(m.n)) - 1)`This gets the next power of two in a fairly obvious way. It is used to pad out the matrix to the next power of 2 size.> `with m:`The context manager is used again for nicer lookups.> `Result[0] += [_(0j, int(e, e))]`Weird pythonoquirkiness again. You can append to lists in tuples with `+=`, but it throws an exception as they're sort of immutable.> `typing(lookup[4])(input())`It's entirely possible that this does things.
gollark: > `def __eq__(self, xy): return self.bigData[math.floor(xy.real * self.n + xy.imag)]`This actually gets indices into the matrix. I named it badly for accursedness. It uses complex number coordinates.> `def __matmul__(self, ǫ):`*This* function gets a 2D "slice" of the matrix between the specified coordinates. > `for (fοr, k), (b, р), (whіle, namedtuple) in itertools.product(I(*int.ℝ(start, end)), enumerate(range(ℤ(start.imag), math.floor(end.imag))), (ǫ, ǫ)):`This is really just bizarre obfuscation for the basic "go through every X/Y in the slice" thing.> `out[b * 1j + fοr] = 0`In case the matrix is too big, just pad it with zeros.> `except ZeroDivisionError:`In case of zero divisions, which cannot actually *happen*, we replace 0 with 1 except this doesn't actually work.> `import hashlib`As ever, we need hashlib.> `memmove(id(0), id(1), 27)`It *particularly* doesn't work because we never imported this name.> `def __setitem__(octonion, self, v):`This sets either slices or single items of the matrix. I would have made it use a cool™️ operator, but this has three parameters, unlike the other ones. It's possible that I could have created a temporary "thing setting handle" or something like that and used two operators, but I didn't.> `octonion[sedenion(malloc, entry, 20290, 15356, 44155, 30815, 37242, 61770, 64291, 20834, 47111, 326, 11094, 37556, 28513, 11322)] = v == int(bool, b)`Set each element in the slice. The sharp-eyed may wonder where `sedenion` comes from.> `"""`> `for testing`> `def __repr__(m):`This was genuinely for testing, although the implementation here was more advanced.> `def __enter__(The_Matrix: 2):`This allows use of `Matrix` objects as context managers.> `globals()[f"""_"""] = lambda h, Ĥ: The_Matrix@(h,Ĥ)`This puts the matrix slicing thing into a convenient function accessible globally (as long as the context manager is running). This is used a bit below.
gollark: * desired
gollark: I can write some code for this if desisred.

References

  1. Sanchez, Korina (September 15, 2014). "Disappearing history". The Freeman. PhilStar Daily, Inc. Retrieved October 9, 2017.
  2. Alcazaren, Paulo (July 14, 2001). "Rotundas: Circles of urban life". The Philippine Star. PhilStar Daily, Inc. Retrieved October 9, 2017.
  3. Alcazaren, Paulo (February 27, 2016). "A plaza and a traveling fountain". The Philippine Star. PhilStar Daily, Inc. Retrieved October 9, 2017.
  4. "Republic of the Philippines: Metro Manila Interchange Construction Project (I)(III)" (PDF). Japan International Cooperation Agency. 2001. Retrieved October 9, 2017.
  5. Vicoy, Ali (November 3, 2013). "City artworks". Manila Bulletin. Manila Bulletin Publishing Corporation. Archived from the original on December 19, 2014. Retrieved October 9, 2017.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.